+ The FB_CALLMONITOR module connects to a AVM FritzBox Fon and listens for telephone
+ events (Receiving incoming call, Making a call)
+
+ In order to use this module with fhem you must enable the CallMonitor feature via
+ telephone shortcode.
+
+ #96*5* - for activating #96*4* - for deactivating
+
+
+
+ Just dial the shortcode for activating on one of your phones, after 3 seconds just hang up. The feature is now activated.
+
+ After activating the CallMonitor-Support in your FritzBox, this module is able to
+ generate an event for each call.
+
+ This module work with any FritzBox Fon model.
+
+
+
+ Define
+
+ define <name> FB_CALLMONITOR <ip-address>[:port]
+
+ port is 1012 by default.
+
+
+
+
+ Set
+
+ - rereadPhonebook - Reloads the FritzBox phonebook (from given file or directly if available)
+
+
+
+
+ Get
+
+ - search <telephone-number> - returns the name of the given number via reverse-search (internal phonebook, cache or internet research)
+
+
+
+
+ Attributes
+
+ - do_not_notify
+ - readingFnAttributes
+ - disable
+ Optional attribute to disable the Callmonitor. When disabled, no phone events can be detected.
+
+ Possible values: 0 => Callmonitor is activated, 1 => Callmonitor is deactivated.
+ Default Value is 0 (activated)
+ - reverse-search (all|internal|klicktel.de|dasoertliche.de|search.ch|dasschnelle.at|none)
+ Activate the reverse searching of the external number (at dial and call receiving).
+ It is possible to select a specific web service, which should be used for reverse searching.
+ If the attribute is set to "all", the reverse search will use the internal phonebook (if running FHEM on a FritzBox) or reverse search on all websites (execept search.ch and dasschnelle.at) until a valid answer is found on of them
+ If is set to "none", then no reverse searching will be used.
Default value is "none".
+ - reverse-search-cache
+ If this attribute is activated each reverse-search result is saved in an internal cache
+ and will be used instead of reverse searching again the same number.
+ Possible values: 0 => off , 1 => on
+ Default Value is 0 (off)
+ - reverse-search-cache-file <file>
+ Write the internal reverse-search-cache to the given file and use it next time FHEM starts.
+ So all reverse search results are persistent written to disk and will be used instantly after FHEM starts.
+ - reverse-search-phonebook-file <file>
+ This attribute can be used to specify the (full) path to a phonebook file in FritzBox format (XML structure). Using this option it is possible to use the phonebook of a FritzBox even without FHEM running on a Fritzbox.
+ The phonebook file can be obtained by an export via FritzBox web UI
+ Default value is /var/flash/phonebook (phonebook filepath on FritzBox)
+ - remove-leading-zero
+ If this attribute is activated, a leading zero will be removed from the external_number (e.g. in telefon systems).
+ Possible values: 0 => off , 1 => on
+ Default Value is 0 (off)
+ - unique-call-ids
+ If this attribute is activated, each call will use a biunique call id. So each call can be separated from previous calls in the past.
+ Possible values: 0 => off , 1 => on
+ Default Value is 0 (off)
+ - local-area-code
+ Use the given local area code for reverse search in case of a local call (e.g. 0228 for Bonn, Germany)
+
+
+
+
+ Generated Events:
+
+ - event: (call|ring|connect|disconnect) - which event in detail was triggerd
+ - external_number: - The participants number which is calling (event: ring) or beeing called (event: call)
+ - external_name: - The result of the reverse lookup of the external_number via internet. Is only available if reverse-search is activated. Special values are "unknown" (no search results found) and "timeout" (got timeout while search request). In case of an timeout and activated caching, the number will be searched again next time a call occurs with the same number
+ - internal_number: - The internal number (fixed line, VoIP number, ...) on which the participant is calling (event: ring) or is used for calling (event: call)
+ - internal_connection: - The internal connection (FON1, FON2, ISDN, DECT, ...) which is used to take the call
+ - external_connection: - The external connection (fixed line, VoIP account) which is used to take the call
+ - call_duration: - The call duration in seconds. Is only generated at a disconnect event. The value 0 means, the call was not taken by anybody.
+ - call_id: - The call identification number to separate events of two or more different calls at the same time. This id number is equal for all events relating to one specific call.
+ - missed_call $number - This event will be raised in case of a missing incoming call. If available, also the name of the calling number will be displayed.
+
+
+
+
+
+FHEM2FHEM
+
+ FHEM2FHEM is a helper module to connect separate FHEM installations.
+
+
+ Define
+
+ define <name> FHEM2FHEM <host>[:<portnr>][:SSL] [LOG:regexp|RAW:devicename] {portpassword}
+
+
+
+ Connect to the remote FHEM on <host>. <portnr> is a telnet
+ port on the remote FHEM, defaults to 7072. The optional :SSL suffix is
+ needed, if the remote FHEM configured SSL for this telnet port. In this case
+ the IO::Socket::SSL perl module must be installed for the local host too.
+
+ Note: if the remote FHEM is on a separate host, the telnet port on the remote
+ FHEM musst be specified with the global option.
+
+ The next parameter specifies the connection
+ type:
+
+ - LOG
+ Using this type you will receive all events generated by the remote FHEM,
+ just like when using the inform on command, and you
+ can use these events just like any local event for FileLog or notify.
+ The regexp will prefilter the events distributed locally, for the syntax
+ see the notify definition.
+ Drawbacks: the remote devices wont be created locally, so list wont
+ show them and it is not possible to manipulate them from the local
+ FHEM. It is possible to create a device with the same name on both FHEM
+ instances, but if both of them receive the same event (e.g. because both
+ of them have a CUL attached), then all associated FileLogs/notifys will be
+ triggered twice.
+
+ - RAW
+ By using this type the local FHEM will receive raw events from the remote
+ FHEM device devicename, just like if it would be attached to the
+ local FHEM.
+ Drawback: only devices using the Dispatch function (CUL, FHZ, CM11,
+ SISPM, RFXCOM, TCM, TRX, TUL) generate raw messages, and you must create a
+ FHEM2FHEM instance for each remote device.
+ devicename must exist on the local
+ FHEM server too with the same name and same type as the remote device, but
+ with the device-node "none", so it is only a dummy device.
+ All necessary attributes (e.g. rfmode if the remote
+ CUL is in HomeMatic mode) must also be set for the local device.
+ Do not reuse a real local device, else duplicate filtering (see dupTimeout)
+ won't work correctly.
+
+
+ The last parameter specifies an optional portpassword, if the remote server
+ activated portpassword.
+
+ Examples:
+
+ define ds1 FHEM2FHEM 192.168.178.22:7072 LOG:.*
+
+ define RpiCUL CUL none 0000
+ define ds2 FHEM2FHEM 192.168.178.22:7072 RAW:RpiCUL
+ and on the RPi (192.168.178.22):
+ rename CUL_0 RpiCUL
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+FHEMWEB
+
+ FHEMWEB is the builtin web-frontend, it also implements a simple web
+ server (optionally with Basic-Auth and HTTPS).
+
+
+
+ Define
+
+ define <name> FHEMWEB <tcp-portnr> [global]
+
+ Enable the webfrontend on port <tcp-portnr>. If global is specified,
+ then requests from all interfaces (not only localhost / 127.0.0.1) are
+ serviced.
+ To enable listening on IPV6 see the comments here.
+
+
+
+
+
+ Set
+
+ - rereadicons
+ reads the names of the icons from the icon path. Use after adding or
+ deleting icons.
+
+ - clearSvgCache
+ delete all files found in the www/SVGcache directory, which is used to
+ cache SVG data, if the SVGcache attribute is set.
+
+
+
+
+
+ Get
+
+ - icon <logical icon>
+ returns the absolute path to the logical icon. Example:
+
+ get myFHEMWEB icon FS20.on
+ /data/Homeautomation/fhem/FHEM/FS20.on.png
+
+
+
+ - pathlist
+ return FHEMWEB specific directories, where files for given types are
+ located
+
+
+
+
+
+ Attributes
+
+
+ - webname
+ Path after the http://hostname:port/ specification. Defaults to fhem,
+ i.e the default http address is http://localhost:8083/fhem
+
+
+
+ - refresh
+ If set, a http-equiv="refresh" entry will be genererated with the given
+ argument (i.e. the browser will reload the page after the given
+ seconds).
+
+
+
+ - plotmode
+ Specifies how to generate the plots:
+
+ - SVG
+ The plots are created with the SVG module.
+ This is the default.
+
+ - gnuplot
+ The plots are created with the gnuplot program. Note: this mode
+ ist only available due to historic reasons.
+
+ - gnuplot-scroll
+ Like the gnuplot-mode, but scrolling to historical values is alos
+ possible, just like with SVG.
+
+
+
+
+ - plotsize
+ the default size of the plot, in pixels, separated by comma:
+ width,height. You can set individual sizes by setting the plotsize of
+ the SVG. Default is 800,160 for desktop, and 480,160 for
+ smallscreen.
+
+
+
+ - nrAxis
+ the number of axis for which space should be reserved on the left and
+ right sides of a plot and optionaly how many axes should realy be used
+ on each side, separated by comma: left,right[,useLeft,useRight]. You
+ can set individual numbers by setting the nrAxis of the SVG. Default is
+ 1,1.
+
+
+
+ - SVGcache
+ if set, cache plots which won't change any more (the end-date is prior
+ to the current timestamp). The files are written to the www/SVGcache
+ directory. Default is off.
+ See also the clearSvgCache command for clearing the cache.
+
+
+
+ - endPlotToday
+ If this FHEMWEB attribute is set to 1, then week and month plots will
+ end today. Else the current week (starting at Sunday) or the current
+ month will be shown.
+
+
+
+ - endPlotNow
+ If this FHEMWEB attribute is set to 1, then day and hour plots will
+ end at current time. Else the whole day, the 6 hour period starting at
+ 0, 6, 12 or 18 hour or the whole hour will be shown. This attribute
+ is not used if the SVG has the attribute startDate defined.
+
+
+
+ - ploteditor
+ Configures if the Plot editor should be shown
+ in the SVG detail view.
+ Can be set to always, onClick or never. Default is always.
+
+
+
+ - plotfork
+ If set, generate the logs in a parallel process. Note: do not use it
+ on Windows and on systems with small memory foorprint.
+
+
+
+ - basicAuth, basicAuthMsg
+ request a username/password authentication for access. You have to set
+ the basicAuth attribute to the Base64 encoded value of
+ <user>:<password>, e.g.:
+ # Calculate first the encoded string with the commandline program
+ $ echo -n fhemuser:secret | base64
+ ZmhlbXVzZXI6c2VjcmV0
+ fhem.cfg:
+ attr WEB basicAuth ZmhlbXVzZXI6c2VjcmV0
+
+ You can of course use other means of base64 encoding, e.g. online
+ Base64 encoders. If basicAuthMsg is set, it will be displayed in the
+ popup window when requesting the username/password.
+
+ If the argument of basicAuth is enclosed in {}, then it will be
+ evaluated, and the $user and $password variable will be set to the
+ values entered. If the return value is true, then the password will be
+ accepted.
+ Example:
+
+ attr WEB basicAuth { "$user:$password" eq "admin:secret" }
+
+
+
+
+ - HTTPS
+ Enable HTTPS connections. This feature requires the perl module
+ IO::Socket::SSL, to be installed with cpan -i IO::Socket::SSL or
+ apt-get install libio-socket-ssl-perl; OSX and the FritzBox-7390
+ already have this module.
+
+ A local certificate has to be generated into a directory called certs,
+ this directory must be in the modpath
+ directory, at the same level as the FHEM directory.
+
+ mkdir certs
+ cd certs
+ openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem
+
+
+
+
+
+ - allowedCommands
+ A comma separated list of commands allowed from this FHEMWEB
+ instance. If set to an empty list , (i.e. comma only)
+ then this FHEMWEB instance will be read-only. If set to
+ get,set , then this FHEMWEB instance will only allow
+ regular usage of the frontend by clicking the icons/buttons/sliders but
+ not changing any configuration.
+
+
+ This attribute intended to be used together with hiddenroom/hiddengroup
+
+
+ Note:allowedCommands should work as intended, but no guarantee
+ can be given that there is no way to circumvent it. If a command is
+ allowed it can be issued by URL manipulation also for devices that are
+ hidden.
+
+ - allowfrom
+
+
+
+ - stylesheetPrefix
+ prefix for the files style.css, svg_style.css and svg_defs.svg. If the
+ file with the prefix is missing, the default file (without prefix) will
+ be used. These files have to be placed into the FHEM directory, and can
+ be selected directly from the "Select style" FHEMWEB menu entry. Example:
+
+ attr WEB stylesheetPrefix dark
+
+ Referenced files:
+
+ darksvg_defs.svg
+ darksvg_style.css
+ darkstyle.css
+
+
+
+ Note:if the argument contains the string smallscreen or touchpad,
+ then FHEMWEB will optimize the layout/access for small screen size (i.e.
+ smartphones) or touchpad devices (i.e. tablets)
+
+ The default configuration installs 3 FHEMWEB instances: port 8083 for
+ desktop browsers, port 8084 for smallscreen, and 8085 for touchpad.
+
+ If touchpad or smallscreen is specified, then WebApp support is
+ activated: After viewing the site on the iPhone or iPad in Safari, you
+ can add a link to the home-screen to get full-screen support. Links are
+ rendered differently in this mode to avoid switching back to the "normal"
+ browser.
+
+
+
+
+ - iconPath
+ colon separated list of directories where the icons are read from.
+ The directories start in the fhem/www/images directory. The default is
+ $styleSheetPrefix:default:fhemSVG:openautomation
+ Set it to fhemSVG:openautomation to get only SVG images.
+
+
+
+
+ - hiddenroom
+ Comma separated list of rooms to "hide", i.e. not to show. Special
+ values are input, detail and save, in which case the input areas, link
+ to the detailed views or save button is hidden (although each aspect
+ still can be addressed through URL manipulation).
+ The list can also contain values from the additional "Howto/Wiki/FAQ"
+ block.
+
+
+
+
+ - hiddengroup
+ Comma separated list of groups to "hide", i.e. not to show in any room
+ of this FHEMWEB instance.
+ Example: attr WEBtablet hiddengroup FileLog,dummy,at,notify
+
+
+
+
+ - menuEntries
+ Comma separated list of name,html-link pairs to display in the
+ left-side list. Example:
+ attr WEB menuEntries fhem.de,http://fhem.de,culfw.de,http://culfw.de
+ attr WEB menuEntries AlarmOn,http://fhemhost:8083/fhem?cmd=set%20alarm%20on
+
+
+
+
+ - longpoll
+ Affects devices states in the room overview only.
+ In this mode status update is refreshed more or less instantaneously,
+ and state change (on/off only) is done without requesting a complete
+ refresh from the server.
+ Default is on.
+
+
+
+
+ - longpollSVG
+ Reloads an SVG weblink, if an event should modify its content. Since
+ an exact determination of the affected events is too complicated, we
+ need some help from the #FileLog definition in the .gplot file: the
+ filter used there (second parameter) must either contain only the
+ deviceName or have the form deviceName.event or deviceName.*. This is
+ always the case when using the Plot
+ editor. The SVG will be reloaded for any event triggered by
+ this deviceName.
+ Default is off.
+
+
+
+
+
+ - redirectCmds
+ Clear the browser URL window after issuing the command by redirecting
+ the browser, as a reload for the same site might have unintended
+ side-effects. Default is 1 (enabled). Disable it by setting this
+ attribute to 0 if you want to study the command syntax, in order to
+ communicate with FHEMWEB.
+
+
+
+
+ - fwcompress
+ Enable compressing the HTML data (default is 1, i.e. yes, use 0 to switch it off).
+
+
+
+
+ - reverseLogs
+ Display the lines from the logfile in a reversed order, newest on the
+ top, so that you dont have to scroll down to look at the latest entries.
+ Note: enabling this attribute will prevent FHEMWEB from streaming
+ logfiles, resulting in a considerably increased memory consumption
+ (about 6 times the size of the file on the disk).
+
+
+
+
+ - CORS
+ If set to 1, FHEMWEB will supply a "Cross origin resource sharing"
+ header, see the wikipedia for details.
+
+
+
+
+ - icon
+ Set the icon for a device in the room overview. There is an
+ icon-chooser in FHEMWEB to ease this task. Setting icons for the room
+ itself is indirect: there must exist an icon with the name
+ ico.png in the iconPath.
+
+
+
+
+ - roomIcons
+ Space separated list of room:icon pairs, to override the default
+ behaviour of showing an icon, if there is one with the name of
+ "icoRoomName". This is the correct way to remove the icon for the room
+ Everything, or to set one for rooms with / in the name (e.g.
+ Anlagen/EDV). The first part is treated as regexp, so space is
+ represented by a dot. Example:
+ attr WEB roomIcons Anlagen.EDV:icoEverything
+
+
+
+
+ - sortRooms
+ Space separated list of rooms to override the default
+ sort order of the room links. Example:
+ attr WEB sortRooms DG OG EG Keller
+
+
+
+
+ - defaultRoom
+ show the specified room if no room selected, e.g. on execution of some
+ commands. If set hides the motd. Example:
+ attr WEB defaultRoom Zentrale
+
+
+
+
+ - sortby
+ Take the value of this attribute when sorting the devices in the room
+ overview instead of the alias, or if that is missing the devicename
+ itself.
+
+
+
+
+ - devStateIcon
+ First form:
+
+ Space separated list of regexp:icon-name:cmd triples, icon-name and cmd
+ may be empty.
+ If the state of the device matches regexp, then icon-name will be
+ displayed as the status icon in the room, and (if specified) clicking
+ on the icon executes cmd. If fhem cannot find icon-name, then the
+ status text will be displayed.
+ Example:
+
+ attr lamp devStateIcon on:closed off:open
+ attr lamp devStateIcon on::A0 off::AI
+ attr lamp devStateIcon .*:noIcon
+
+ Note: if the image is referencing an SVG icon, then you can use the
+ @colorname suffix to color the image. E.g.:
+
+ attr Fax devStateIcon on:control_building_empty@red off:control_building_filled:278727
+
+
+
+ Second form:
+
+ Perl regexp enclosed in {}. If the code returns undef, then the default
+ icon is used, if it retuns a string enclosed in <>, then it is
+ interpreted as an html string. Else the string is interpreted as a
+ devStateIcon of the first fom, see above.
+ Example:
+ {'<div style="width:32px;height:32px;background-color:green"></div>'}
+
+
+
+
+
+ - devStateStyle
+ Specify an HTML style for the given device, e.g.:
+
+ attr sensor devStateStyle style="text-align:left;;font-weight:bold;;"
+
+
+
+
+
+ - webCmd
+ Colon separated list of commands to be shown in the room overview for a
+ certain device. Has no effect on smallscreen devices, see the
+ devStateIcon command for an alternative.
+ Example:
+
+ attr lamp webCmd on:off:on-for-timer 10
+
+
+
+ The first specified command is looked up in the "set device ?" list
+ (see the setList attribute for dummy devices).
+ If there it contains some known modifiers (colon, followed
+ by a comma separated list), then a different widget will be displayed:
+
+ - if the modifier is ":noArg", then no further input field is
+ displayed
+ - if the modifier is ":time", then a javascript driven timepicker is
+ displayed.
+ - if the modifier is ":textField", an input field is displayed.
+ - if the modifier is of the form
+ ":slider,<min>,<step>,<max>", then a javascript
+ driven slider is displayed
+ - if the modifier is of the form ":multiple,val1,val2,...", then
+ multiple values can be selected, the result is comma separated.
+ - else a dropdown with all the modifier values is displayed
+
+ If the command is state, then the value will be used as a command.
+ Examples for the modifier:
+
+ define d1 dummy
+ attr d1 webCmd state
+ attr d1 setList state:on,off
+ define d2 dummy
+ attr d2 webCmd state
+ attr d2 setList state:slider,0,1,10
+ define d3 dummy
+ attr d3 webCmd state
+ attr d3 setList state:time
+
+ Note: this is an attribute for the displayed device, not for the FHEMWEB
+ instance.
+
+
+
+
+ - column
+ Allows to display more than one column per room overview, by specifying
+ the groups for the columns. Example:
+
+ attr WEB column LivingRoom:FS20,notify|FHZ,notify DiningRoom:FS20|FHZ
+
+ In this example in the LivingRoom the FS20 and the notify group is in
+ the first column, the FHZ and the notify in the second.
+ Note: some elements like SVG plots and readingsGroup can only be part of
+ a column if they are part of a group.
+
+
+
+ - closeConn
+ If set, a TCP Connection will only serve one HTTP request. Seems to
+ solve problems for certain hardware combinations like slow
+ FHEM-Server, and iPad/iPhone as Web-client.
+
+
+
+
+
+
+FHT
+
+ Fhem can receive FHT radio (868.35 MHz) messages either through an FHZ or an CUL device, so this must be
+ defined first.
+
+
+ Define
+
+ define <name> FHT <fhtaddress>
+
+
+ <fhtaddress> is a four digit hex number,
+ corresponding to the address of the FHT80b device.
+
+
+ Examples:
+
+
+ See the FHT section in set for more.
+
+
+
+
+ Set
+
+ set <name> <valuetype> <value>
+
+ where value is one of:
+
+ desired-temp
+ day-temp night-temp
+ report1 report2
+ refreshvalues
+ mode
+ holiday1 holiday2 # see mode holiday_short or holiday
+ manu-temp # No clue what it does.
+ year month day hour minute
+ time date
+ lowtemp-offset # Alarm-Temp.-Differenz
+ windowopen-temp
+ mon-from1 mon-to1 mon-from2 mon-to2
+ tue-from1 tue-to1 tue-from2 tue-to2
+ wed-from1 wed-to1 wed-from2 wed-to2
+ thu-from1 thu-to1 thu-from2 thu-to2
+ fri-from1 fri-to1 fri-from2 fri-to2
+ sat-from1 sat-to1 sat-from2 sat-to2
+ sun-from1 sun-to1 sun-from2 sun-to2
+
+
+ Examples:
+
+ set wz desired-temp 22.5
+ set fl desired-temp 20.5 day-temp 19.0 night-temp 16.0
+
+
+
+ Notes:
+
+ - Following events are reported (more or less regularly) by each FHT
+ device:
measured-temp actuator actuator1...actuator8
+ warnings
+ You can use these strings for notify or
+ FileLog definitions.
+
+ - warnings can contain following strings:
+ none, Battery low,Temperature too low, Window open,
+ Fault on window sensor
+
+ - actuator (without a suffix) stands for all actuators.
+ - actuator or actuator1..8 can take following values:
+
+ - <value>%
+ This is the normal case, the actuator is instructed to
+ open to this value.
+
+ - offset <value>%
+ The actuator is running with this offset.
+
+ - lime-protection
+ The actuator was instructed to execute the lime-protection
+ procedure.
+
+ - synctime
+ If you select Sond/Sync on the FHT80B, you'll see a count
+ down.
+
+ - test
+ The actuator was instructed by the FHT80b to emit a beep.
+
+ - pair
+ The the FHT80b sent a "you-belong-to-me" to this actuator.
+
+
+
+
+
+ - The FHT is very economical (or lazy), it accepts one message from the
+ FHZ1x00 every 115+x seconds, where x depends on the fhtaddress. Don't
+ be surprised if your command is only accepted 10 minutes later by the
+ device. FHT commands are buffered in the FHZ1x00/CUL till they are
+ sent to the FHT, see the related
fhtbuf entry in the
+ get section. You can send up to 8
+ commands in one message at once to the FHT if you specify them all as
+ arguments to the same set command, see the example above.
+
+
+
+ - time sets hour and minute to local time
+
+ - date sets year, month and date to local time
+
+ - refreshvalues is an alias for report1 255 report2 255
+
+ - All
*-temp values need a temperature
+ as argument, which will be rounded to 0.5 Celsius.
+ Temperature values must between 5.5 and 30.5 Celsius. Value 5.5 sets
+ the actuator to OFF, value 30.5 set the actuator to ON
+
+ mode is one of auto, manual, holiday or
+ holiday_short.
+ If the mode is holiday, then the mode switches back to either auto or
+ manual at 00:00 of the day specified by the following:
+
+ - holiday1 sets the end-day of the holiday
+ - holiday2 sets the end-month of the holiday
+
+ For holiday_short (party mode)
+
+ - holiday1 sets the absolute hour to switch back from this
+ mode (in 10-minute steps, max 144)
+ - holiday2 sets the day of month to switch back from this mode
+ (can only be today or tomorrow, since holiday1 accepts only 24
+ hours).
+ Example:
+
+ - current date is 29 Jan, time is 18:05
+ - you want to switch to party mode until tomorrow 1:00
+ - set holiday1 to 6 (6 x 10min = 1hour) and holiday2 to
+ 30
+
+
+
+ The temperature for the holiday period is set by the desired-temperature
+ parameter. Note that you cannot set holiday mode for days earlier than the
+ day after tomorrow, for this you must use holiday_short.
+ Note also, you cannot set parameters seperately, you must set them in one command.
+ Example:
+
+ set FHT1 mode holiday holiday1 24 holiday2 12 desired-temp 14
+
+
+
+ - The
*-from1/*-from2/*-to1/*-to2 valuetypes need a time
+ spec as argument in the HH:MM format. They define the periods, where
+ the day-temp is valid. The minute (MM) will be rounded to 10, and
+ 24:00 means off.
+
+ - To synchronize the FHT time and to "wake" muted FHTs it is adviseable
+ to schedule following command:
+ define fht_sync at +*3:30 set TYPE=FHT time
+
+
+
+ report1 with parameter 255 requests all settings for
+ monday till sunday to be sent. The argument is a bitfield, to request
+ unique values add up the following:
+
+ - 1: monday
+ - 2: tuesday
+ - 4: thursday
+ - 8: wednesday
+ - 16: friday
+ - 32: saturday
+ - 64: sunday
+
+ measured-temp and actuator is sent along if it is considered
+ appropriate
+ by the FHT.
+
+ Note: This command generates a lot of RF traffic, which can
+ lead to further problems, especially if the reception is not clear.
+
+
+ report2 with parameter 255 requests the following
+ settings to be reported: day-temp night-temp windowopen-temp
+ lowtemp-offset desired-temp measured-temp mode warnings.
+ The argument is (more or less) a bitfield, to request unique values
+ add up the following:
+
+ - 1: warnings
+ - 2: mode
+ - 4: day-temp, night-temp, windowopen-temp
+ - 64: lowtemp-offset
+
+ measured-temp and actuator is sent along if it is considered
+ appropriate by the FHT.
+
+
+ lowtemp-offset needs a temperature as argument, valid
+ values must be between 1.0 and 5.0 Celsius. It will trigger a
+ warning if desired-temp - measured-temp >
+ lowtemp-offset in a room for at least 1.5 hours after the last
+ desired-temp change.
+
+
+ - FHEM optionally has an internal software buffer for FHT devices.
+ This buffer should prevent transmission errors. If there is no
+ confirmation for a given period, FHEM resends the command. You can
+ see the queued commands with list
+ <fht-device>.
+ See the fhtsoftbuffer,
+ retrycount and
+ minfhtbuffer attributes for details.
+
+
+
+ - If a buffer is still in the softbuffer, it will be sent in the
+ following order:
desired-temp,mode,report1,report2,
+ holiday1,holiday2,day-temp,night-temp, [all other commands]
+
+
+
+
+
+
+
+ Get
+
+
+ Attributes
+
+ - dummy
+ Note:It makes sense to define an FHT device even for an FHT8b,
+ else you will receive "unknown FHT device, please define one" message
+ for each FHT8b as the CUL is reporting the 8b valve messages. But you
+ should set the dummy attribute for these devices, else the internal FHT
+ buffer of the CUL will be filled with data for the 8b's which is never
+ consumed. If the buffer is full, you'll get "EOB" messages from the CUL,
+ and you cannot transmit any data to the 80b's
+
+
+ - retrycount
+ If the fhtsoftbuffer attribute is set, then
+ resend commands retrycount times if after 240 seconds
+ no confirmation message is received from the corresponding FHT
+ device.
+ Default is 1.
+
+
+ - minfhtbuffer
+ FHEM won't send commands to the FHZ if its fhtbuffer is below
+ this value, default is 0. If this value is low, then the ordering of
+ fht commands (see the note in the FHT section of set)
+ has little effect, as only commands in the softbuffer can be
+ prioritized. The maximum value should be 7 below the hardware maximum
+ (see fhtbuf).
+
+
+
+ - lazy
+ If the lazy attribute is set, FHEM won't send commands to the FHT if
+ the current reading and the value to be set are already identical. This
+ may help avoiding conflicts with the max-1%-time-on-air rule in large
+ installations. Not set per default.
+
+
+
+ - tmpcorr
+ Correct the temperature reported by the FHT by the value specified.
+ Note: only the measured-temp value reported by FHEM (used for logging)
+ will be modified.
+
+
+ - ignore
+ - do_not_notify
+ - model (fht80b)
+ - showtime
+ - IODev
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+ Generated events:
+
+ - actuator
+ - actuator1 actuator2 actuator3 actuator4
+ actuator5 actuator6 actuator7 actuator8
+ (sent if you configured an offset for the associated valve)
+ - 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
+ (only if the CUL is configured to transmit FHT protocol data)
+
+
+
+
+
+
+FHT8V
+
+ Fhem can directly control FHT8V type valves via a CUL
+ device without an intermediate FHT. This paragraph documents one of the
+ building blocks, the other is the PID device.
+
+
+
+
+ Define
+
+ define <name> FHT8V <housecode> [IODev|FHTID]
+
+
+ <housecode> is a four digit hex number,
+ and must have the following relation to the housecode of the corresponding CUL
+ device:
+ given the CUL housecode as AABB, then this housecode must be
+ of the form CCBB, where CC is greater or equal to AA, but less then AA+8.
+
+ This form is chosen so that the CUL can update all FHT8V valve states
+ within 2 minutes.
+
+
+ <IODev> must be specified if the last defined CUL device
+ is not the one to use. Usually this is done voa the IODev attribute, but as the address checked is performed
+ at the definition, we must use an exception here.
+
+ As an alternative you can specify the FHTID of the assigned IODev device
+ (instead of the IODev itself), this method is needed if you are using FHT8V
+ through FHEM2FHEM.
+
+
+ Examples:
+
+
+
+
+
+ Set
+
+ - set <name> valve <value;>
+ Set the valve to the given value (in percent, from 0 to 100).
+
+ - set <name> pair
+ Pair the valve with the CUL.
+
+ - set <name> decalc
+ Start a decalcifying cycle on the given valve
+
+
+
+
+
+ Get
+
+ - get <name> valve
+ Read back the valve position from the CUL FHT buffer, and convert it to percent (from 0 to 100).
+
+
+
+
+
+ Attributes
+
+
+
+
+
+FHZ
+
+ Note: this module requires the Device::SerialPort or Win32::SerialPort module
+ if the devices is connected via USB or a serial port.
+
+
+
+ Define
+
+ define <name> FHZ <serial-device>
+
+ Specifies the serial port to communicate with the FHZ1000PC or FHZ1300PC.
+ The name(s) of the serial-device(s) depends on your distribution.
+
+ If the serial-device is called none, then no device will be opened, so you
+ can experiment without hardware attached.
+
+ The program can service multiple devices, FS20 and FHT device commands will
+ be sent out through the last FHZ device defined before the definition of
+ the FS20/FHT device. To change the association, use the IODev attribute.
+
+
+ For GNU/Linux you may want to read our hints for
+ GNU/Linux about multiple USB
+ devices.
+
+ Note:The firmware of the FHZ1x00 will drop commands if the airtime
+ for the last hour would exceed 1% (which corresponds roughly to 163
+ commands). For this purpose there is a command counter for the last hour
+ (see list FHZDEVICE), which triggers with "TRANSMIT LIMIT EXCEEDED" if
+ there were more than 163 commands in the last hour.
+
+ If you experience problems (for verbose 4 you get a lot of "Bad CRC
+ message" in the log), then try to define your device as define
+ <name> FHZ <serial-device> strangetty
+
+
+
+
+ Set
+
+ set FHZ <variable> [<value>]
+
+ where value is one of:
+
+ FHTcode
+ initFS20
+ initHMS
+ stopHMS
+ initfull
+ raw
+ open
+ reopen
+ close
+ time
+
+ Notes:
+
+ - raw is used to send out "raw" FS20/FHT messages ("setters" only - no query messages!).
+ See message byte streams in FHEM/00_FHZ.pm and the doc directory for some examples.
+ - In order to set the time of your FHT's, schedule this command every
+ minute:
+ define fhz_timer at +*00:01:00 set FHZ time
+ See the verbose to prevent logging of
+ this command.
+
+ - FHTcode is a two digit hex number (from 00 to 63?) and sets the
+ central FHT code, which is used by the FHT devices. After changing
+ it, you must reprogram each FHT80b with: PROG (until Sond
+ appears), then select CEnt, Prog, Select nA.
+ - If the FHT ceases to work for FHT devices whereas other devices
+ (e.g. HMS, KS300) continue to work, a command could help. Try if the FHZ
+ ceases to work completely. If all else fails, shutdown fhem, unplug
+ and replug the FHZ device. Problems with FHZ may also be related to
+ long USB cables or insufficient power on the USB - use a powered hub
+ to improve this particular part of such issues.
+ See our USB page
+ for detailed USB / electromag. interference troubleshooting.
+ initfull issues the initialization sequence for the FHZ
+ device:
+
+ get FHZ init2
+ get FHZ serial
+ set FHZ initHMS
+ set FHZ initFS20
+ set FHZ time
+ set FHZ raw 04 01010100010000
+
+ reopen closes and reopens the serial device port. This
+ implicitly initializes the FHZ and issues the
+ initfull command sequence.
+ stopHMS probably is the inverse of initHMS
+ (I don't have authoritative info on what exactly it does).
+ close closes and frees the serial device port until you open
+ it again with open , e.g. useful if you need to temporarily
+ unload the ftdi_sio kernel module to use the bit-bang mode.
+
+
+
+
+
+
+ Get
+
+ get FHZ <value>
+
+ where value is one of:
+
+ init1
+ init2
+ init3
+ serial
+ fhtbuf
+
+ Notes:
+
+ - The mentioned codes are needed for initializing the FHZ1X00
+ - The answer for a command is also displayed by
list FHZ
+
+ -
+ The FHZ1x00PC has a message buffer for the FHT (see the FHT entry in
+ the set section). If the buffer is full, then newly
+ issued commands will be dropped, if the attribute fhtsoftbuffer is not set.
+
fhtbuf returns the free memory in this buffer (in hex),
+ an empty buffer in the FHZ1000 is 2c (42 bytes), in the FHZ1300 is 4a
+ (74 bytes). A message occupies 3 + 2x(number of FHT commands) bytes,
+ this is the second reason why sending multiple FHT commands with one
+ set is a good idea. The first reason is, that
+ these FHT commands are sent at once to the FHT.
+
+
+
+
+
+
+ Attributes
+
+
+ - do_not_notify
+ Disable FileLog/notify/inform notification for a device. This affects
+ the received signal, the set and trigger commands.
+
+ - dummy
+
+ - showtime
+
+
+ - loglevel
+ Note:Deprecated! The module maintainer is encouraged to replace it
+ with verbose.
+
+ Set the device loglevel to e.g. 6 if you do not wish messages from a
+ given device to appear in the global logfile (FHZ/FS20/FHT). E.g. to
+ set the FHT time, you should schedule "set FHZ time" every minute, but
+ this in turn makes your logfile unreadable. These messages will not be
+ generated if the FHZ attribute loglevel is set to 6.
+ On the other hand, if you have to debug a given device, setting its
+ loglevel to a smaller value than the value of the global verbose attribute,
+ it will output its messages normally seen only with higher global verbose
+ levels.
+
+
+ - model (fhz1000,fhz1300)
+
+
+ - fhtsoftbuffer
+ As the FHZ command buffer for FHT devices is limited (see fhtbuf),
+ and commands are only sent to the FHT device every 120 seconds,
+ the hardware buffer may overflow and FHT commands get lost.
+ Setting this attribute implements an "unlimited" software buffer.
+ Default is disabled (i.e. not set or set to 0).
+
+
+
+
+
+
+
+FLOORPLAN
+
+ Implements an additional entry "Floorplans" to your fhem menu, leading to a userinterface without fhem-menu, rooms or devicelists.
+ Devices can be displayed at a defined coordinate on the screen, usually with a clickable icon allowing to switch
+ the device on or off by clicking on it. A background-picture can be used - use e.g. a floorplan of your house, or any picture.
+ Use floorplanstyle.css to adapt the representation.
+ Step-by-step setup guides are available in
+ english and
+ german.
+
+
+
+ Define
+
+ define <name> FLOORPLAN
+
+
+ Hint: Store fp_<name>.png in your image folder (www/images/default , www/pgm2 or FHEM) to use it as background picture.
+ Example:
+
+
+ define Groundfloor FLOORPLAN
+ fp_Groundfloor.png
+
+
+
+
+
+
+ Set
+
+
+
+
+ Get
+
+ get <name> config
+
+ Displays the configuration of the floorplan with all attributes. Can be used in an include-file.
+
+
+
+
+ Attributes
+
+ - userattr fp_<name> <top>,<left>[,<style>[,<description>]]
+ A userattr fp_<name> will be created automatically if it does not exist yet.
+
+ - top = screen-position, pixels from top of screen
+ - left = screen-position, pixels from left of screen
+ - style =
+
+ - 0 icon/state only
+ - 1 devicename and icon/state
+ - 2 devicename, icon/state and commands
+ - 3 device-reading and optional description
+ - 4 S300TH-specific, displays temperature above humidity
+ - 5 icon/state and commands
+ - 6 device-reading, reading-timestamp and optional description
+
+
+ - description will be displayed instead of the original devicename
+
+ Examples:
+
+
+ attr lamp1 fp_Groundfloor 100,100 | #display lamp1 with icon only at screenposition 100,100 |
+ attr lamp2 fp_Groundfloor 100,140,1,Art-Deco | #display lamp2 with description 'Art-Deco-Light' at 100,140 |
+ attr lamp2 fp_FirstFloor 130,100,1 | #display the same device at different positions on other floorplans |
+ attr myFHT fp_Groundfloor 300,20,10,Temperature | #display given Text + FHT-temperature |
+
+
+ Hint: no blanks between parameters
+
+
+ - fp_arrange
+ Activates the "arrange mode" which shows an additional menu on the screen,
+ allowing to place devices easily on the screen.
+ Example:
+
+ attr Groundfloor fp_arrange 1
+ attr Groundfloor fp_arrange detail #displays the devices with infos room, type, alias
+ attr Groundfloor fp_arrange WEB #activates arrange mode for frontend-device WEB only
+
+
+ - stylesheet
+ Explicitely sets your personal stylesheet for the floorplan. This overrides the standard stylesheet.
+ The standard stylesheet for floorplans is floorplanstyle.css . If the stylesheetPrefix is set for the corresponding FHEMWEB instance, this same
+ stylesheetPrefix is also prepended to the stylesheet for floorplans.
+ All stylesheets must be stored in the stylesheet subfolder of the fhem filesystem hierarchy. Store your personal
+ stylesheet along with floorplanstyle.css in the same folder.
+ Example:
+
+ attr Groundfloor stylesheet myfloorplanstyle.css
+
+
+
+ - fp_default
+ The floorplan startscreen is skipped if this attribute is assigned to one of the floorplans in your installation.
+
+ Example:
+
+ attr Groundfloor fp_default 1
+
+
+ - fp_noMenu
+ Suppresses the menu which usually shows the links to all your floorplans.
+
+ Example:
+
+ attr Groundfloor fp_noMenu 1
+
+
+ - commandfield
+ Adds a fhem-commandfield to the floorplan screen.
+
+ Example:
+
+ attr Groundfloor commandfield 1
+
+
+ - fp_backgroundimg
+ Allows to choose a background-picture independent of the floorplan-name.
+
+ Example:
+
+ attr Groundfloor fp_backgroundimg foobar.png
+
+
+ - fp_viewport
+ Allows usage of a user-defined viewport-value for touchpad.
+ Default-viewport-value is "width=768".
+
+
+
+ - fp_roomIcons
+ Space separated list of floorplan:icon pairs, to assign icons
+ to the floorplan-menu, just like the functionality for rooms
+ in FHEMWEB. Example:
+ attr Grundriss fp_roomIcons Grundriss:control_building_empty Media:audio_eq
+
+
+ - Inherited from FHEMWEB
+ The following attributes are inherited from the underlying FHEMWEB instance:
+
+
+
+
+
+
+
+
+
+FRM
+
+ connects fhem to Arduino using
+ the Firmata protocol.
+
+ A single FRM device can serve multiple FRM-clients.
+ Clients of FRM are:
+ FRM_IN for digital input
+ FRM_OUT for digital out
+ FRM_AD for analog input
+ FRM_PWM for analog output (pulse_width_modulated)
+ FRM_RGB control multichannel/RGB-LEDs by pwm
+ FRM_SERVO for pwm-controled servos as being used in modelmaking
+ FRM_LCD output text to LCD attached via I2C
+ FRM_I2C to read data from integrated circutes attached
+ to Arduino supporting the
+ i2c-protocol.
+ OWX to read/write sensors and actors on 1-Wire bus.
+
+ Each client stands for a Pin of the Arduino configured for a specific use
+ (digital/analog in/out) or an integrated circuit connected to Arduino by i2c.
+
+ Note: this module is based on Device::Firmata module (perl-firmata).
+ perl-firmata is included in FHEM-distributions lib-directory. You can download the latest version as a single zip file from github.
+
+ Note: this module may require the Device::SerialPort or Win32::SerialPort
+ module if you attach the device via USB and the OS sets strange default
+ parameters for serial devices.
+
+
+ Define
+
+ define <name> FRM {<device> | <port> [global]}
+ Specifies the FRM device.
+
+ - USB-connected devices:
+ <device> specifies the serial port to communicate with the Arduino.
+ The name of the serial-device depends on your distribution, under
+ linux the cdc_acm kernel module is responsible, and usually a
+ /dev/ttyACM0 device will be created. If your distribution does not have a
+ cdc_acm module, you can force usbserial to handle the Arduino by the
+ following command:
+ modprobe usbserial vendor=0x03eb product=0x204b
+ In this case the device is most probably /dev/ttyUSB0.
+
+ You can also specify a baudrate if the device name contains the @
+ character, e.g.: /dev/ttyACM0@38400
+
+ If the baudrate is "directio" (e.g.: /dev/ttyACM0@directio), then the
+ perl module Device::SerialPort is not needed, and fhem opens the device
+ with simple file io. This might work if the operating system uses sane
+ defaults for the serial parameters, e.g. some Linux distributions and
+ OSX.
+
+ The Arduino has to run either 'StandardFirmata' or 'ConfigurableFirmata'.
+ StandardFirmata supports Digital and Analog-I/O, Servo and I2C. In addition
+ to that ConfigurableFirmata supports 1-Wire, Stepper-motors and allows to
+ connect via ethernet in client mode.
+
+ You can find StandardFirmata in the Arduino-IDE under 'Examples->Firmata->StandardFirmata
+ ConfigurableFirmata has to be installed manualy. See
+ ConfigurableFirmata on GitHub or FHEM-Wiki
+
+
+ - Network-connected devices:
+ <port> specifies the port the FRM device listens on. If global is
+ specified the socket is bound to all local ip-addresses, otherwise to localhost
+ only.
+ The Arduino must ConfigurableFirmata. The connection is initiated by the arduino
+ in client-mode. Therefor the ip-address and port of the fhem-server has to be
+ configured an the arduino, so it knows where to connect to.
+ As of now only a single Arduino per FRM-device configured is supported. Multiple
+ Arduinos may connect to different FRM-devices configured for different ports.
+ ConfigurableFirmata has to be installed manualy. See
+ ConfigurableFirmata on GitHub or FHEM-Wiki
+
+
+ -
+ If the device is called none, then no device will be opened, so you
+ can experiment without hardware attached.
+
+
+
+
+
+ Set
+
+ -
+
set <name> init
+ reinitializes the FRM-Client-devices configured for this Arduino
+
+ -
+
set <name> reset
+ does a complete reset of FRM by disconnecting from, reconnecting to and reinitializing the Arduino and FRM internals and all attached FRM-client-devices
+
+
+
+
+
+ Attributes
+
+ - i2c-config
+ Configure the arduino for ic2 communication. This will enable i2c on the
+ i2c_pins received by the capability-query issued during initialization of FRM.
+ As of Firmata 2.3 you can set a delay-time (in microseconds) that will be inserted into i2c
+ protocol when switching from write to read.
+ See: Firmata Protocol details about I2C
+
+ - sampling-interval
+ Configure the interval Firmata reports data to FRM. Unit is milliseconds.
+ See: Firmata Protocol details about Sampling Interval
+
+
+
+
+
+
+FRM_AD
+
+ represents a pin of an Arduino running Firmata
+ configured for analog input.
+ The value read is stored in reading 'state'. Range is from 0 to 1023 (10 Bit)
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_AD <pin>
+ Defines the FRM_AD device. <pin> is the arduino-pin to use.
+
+
+
+
+ Set
+
+
+ Get
+
+ - reading
+ returns the voltage-level read on the arduino-pin. Values range from 0 to 1023.
+ - alarm-upper-threshold
+ returns the current state of 'alarm-upper-threshold'. Values are 'on' and 'off' (Defaults to 'off')
+ 'alarm-upper-threshold' turns 'on' whenever the 'reading' is higher than the attribute 'upper-threshold'
+ it turns 'off' again as soon 'reading' falls below 'alarm-upper-threshold'
+ - alarm-lower-threshold
+ returns the current state of 'alarm-lower-threshold'. Values are 'on' and 'off' (Defaults to 'off')
+ 'alarm-lower-threshold' turns 'on' whenever the 'reading' is lower than the attribute 'lower-threshold'
+ it turns 'off' again as soon 'reading rises above 'alarm-lower-threshold'
+ - state
+ returns the 'state' reading
+
+
+ Attributes
+
+ - upper-threshold
+ sets the 'upper-threshold'. Whenever the 'reading' exceeds this value 'alarm-upper-threshold' is set to 'on'
+ As soon 'reading' falls below the 'upper-threshold' 'alarm-upper-threshold' turns 'off' again
+ Defaults to 1024.
+ - lower-threshold
+ sets the 'lower-threshold'. Whenever the 'reading' falls below this value 'alarm-lower-threshold' is set to 'on'
+ As soon 'reading' rises above the 'lower-threshold' 'alarm-lower-threshold' turns 'off' again
+ Defaults to -1.
+ - IODev
+ Specify which FRM to use. (Optional, only required if there is more
+ than one FRM-device defined.)
+
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+FRM_I2C
+
+ represents an integrated curcuit connected to the i2c-pins of an Arduino
+ running Firmata
+ Requires a defined FRM-device to work.
+ this FRM-device has to be configures for i2c by setting attr 'i2c-config' on the FRM-device
+ it reads out the ic-internal storage in intervals of 'sampling-interval' as set on the FRM-device
+
+
+ Define
+
+ define <name> FRM_I2C <i2c-address> <register> <bytes-to-read>
+ Specifies the FRM_I2C device.
+ - i2c-address is the (device-specific) address of the ic on the i2c-bus
+ - register is the (device-internal) address to start reading bytes from.
+ - bytes-to-read is the number of bytes read from the ic
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+FRM_IN
+
+ represents a pin of an Arduino running Firmata
+ configured for digital input.
+ The current state of the arduino-pin is stored in reading 'state'. Values are 'on' and 'off'.
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_IN <pin>
+ Defines the FRM_IN device. <pin>> is the arduino-pin to use.
+
+
+
+
+ Set
+
+ - alarm on|off
+ set the alarm to on or off. Used to clear the alarm.
+ The alarm is set to 'on' whenever the count reaches the threshold and doesn't clear itself.
+
+
+ Get
+
+ - reading
+ returns the logical state of the arduino-pin. Values are 'on' and 'off'.
+ - count
+ returns the current count. Contains the number of toggles of the arduino-pin.
+ Depending on the attribute 'count-mode' every rising or falling edge (or both) is counted.
+ - alarm
+ returns the current state of 'alarm'. Values are 'on' and 'off' (Defaults to 'off')
+ 'alarm' doesn't clear itself, has to be set to 'off' eplicitly.
+ - state
+ returns the 'state' reading
+
+
+ Attributes
+
+ - activeLow <yes|no>
+ - count-mode none|rising|falling|both
+ Determines whether 'rising' (transitions from 'off' to 'on') of falling (transitions from 'on' to 'off')
+ edges (or 'both') are counted. Defaults to 'none'
+ - count-threshold <number>
+ sets the theshold-value for the counter. Whenever 'count' reaches the 'count-threshold' 'alarm' is
+ set to 'on'. Use 'set alarm off' to clear the alarm.
+ - reset-on-threshold-reached yes|no
+ if set to 'yes' reset the counter to 0 when the threshold is reached (defaults to 'no').
+
+ - internal-pullup on|off
+ allows to switch the internal pullup resistor of arduino to be en-/disabled. Defaults to off.
+
+ - IODev
+ Specify which FRM to use. (Optional, only required if there is more
+ than one FRM-device defined.)
+
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+FRM_LCD
+
+
+FRM_OUT
+
+ represents a pin of an Arduino running Firmata
+ configured for digital output.
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_OUT <pin>
+ Defines the FRM_OUT device. <pin>> is the arduino-pin to use.
+
+
+
+
+ Set
+
+
+
+ Get
+
+
+ Attributes
+
+ - restoreOnStartup <on|off>
+ - restoreOnReconnect <on|off>
+ - activeLow <yes|no>
+ - IODev
+ Specify which FRM to use. (Optional, only required if there is more
+ than one FRM-device defined.)
+
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+FRM_PWM
+
+ represents a pin of an Arduino running Firmata
+ configured for analog output.
+ The value set will be output by the specified pin as a pulse-width-modulated signal.
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_PWM <pin>
+ Defines the FRM_PWM device. <pin>> is the arduino-pin to use.
+
+
+
+
+ Set
+
+ set <name> on
+ sets the pulse-width to 100%
+
+
+ set <name> off
+ sets the pulse-width to 0%
+
+
+
+ set <name> toggle
+ toggles the pulse-width in between to the last value set by 'value' or 'dim' and 0 respectivly 100%
+
+
+ set <name> value <value>
+ sets the pulse-width to the value specified
+ Range is from 0 to 255 (for 8-bit resolution) (see analogWrite() for details)
+
+
+ set <name> dim <value>
+ sets the pulse-width to the value specified in percent
+ Range is from 0 to 100
+
+
+ set <name> dimUp
+ increases the pulse-width by 10%
+
+
+ set <name> dimDown
+ decreases the pulse-width by 10%
+
+
+ Get
+
+
+ Attributes
+
+ - restoreOnStartup <on|off>
+ - restoreOnReconnect <on|off>
+ - IODev
+ Specify which FRM to use. (Optional, only required if there is more
+ than one FRM-device defined.)
+
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+FRM_RGB
+
+ allows to drive LED-controllers and other multichannel-devices that use PWM as input by an Arduino running Firmata
+
+ The value set will be output by the specified pins as pulse-width-modulated signals.
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_RGB <pin> <pin> <pin> [pin...]
+ Defines the FRM_RGB device. <pin>> are the arduino-pin to use.
+ For rgb-controlled devices first pin drives red, second pin green and third pin blue.
+
+
+
+
+ Set
+
+ set <name> on
+ sets the pulse-width of all configured pins to 100%
+
+ set <name> off
+ sets the pulse-width of all configured pins to 0%
+
+
+ set <name> toggle
+ toggles in between the last dimmed value, 0% and 100%. If no dimmed value was set before defaults to pulsewidth 50% on all channels
+
+ set <name> rgb <value>
+ sets the pulse-width of all channels at once. Also sets the value toggle can switch to
+ Value is encoded as hex-string, 2-digigs per channel (e.g. FFFFFF for reguler rgb)
+
+ set <name> pct <value>
+ dims all channels at once while leving the ratio in between the channels unaltered.
+ Range is 0-100 ('pct' stands for 'percent')
+
+ set <name> dimUp
+ dims up by 10%
+
+ set <name> dimDown
+ dims down by 10%
+
+ Get
+
+ get <name> rgb
+ returns the values set for all channels. Format is hex, 2 nybbles per channel.
+
+
+ get <name> RGB
+ returns the values set for all channels in normalized format. Format is hex, 2 nybbles per channel.
+ Values are scaled such that the channel with the highest value is set to FF. The real values are calculated
+ by multipying each byte with the value of 'pct'.
+
+
+ get <name> pct
+ returns the value of the channel with the highest value scaled to the range of 0-100 (percent).
+
+
+ Attributes
+
+ - restoreOnStartup <on|off>
+ - restoreOnReconnect <on|off>
+ - IODev
+ Specify which FRM to use. (Optional, only required if there is more
+ than one FRM-device defined.)
+
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+FRM_ROTENC
+
+ represents a rotary-encoder attached to two pins of an Arduino running Firmata
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_ROTENC <pinA> <pinB> [id]
+ Defines the FRM_ROTENC device. <pinA>> and <pinA>> are the arduino-pins to use.
+ [id] is the instance-id of the encoder. Must be a unique number per FRM-device (rages from 0-4 depending on Firmata being used, optional if a single encoder is attached to the arduino).
+
+
+
+
+ Set
+ - reset
+ resets to value of 'position' to 0
+
+ Get
+
+ - position
+ returns the position of the rotary-encoder attached to pinA and pinB of the arduino
+
+
+ Attributes
+
+
+
+
+
+FRM_SERVO
+
+ represents a pin of an Arduino running Firmata
+ configured to drive a pwm-controlled servo-motor.
+ The value set will be drive the shaft of the servo to the specified angle. see Servo.write for values and range
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_SERVO <pin>
+ Defines the FRM_SERVO device. <pin>> is the arduino-pin to use.
+
+
+
+
+ Set
+
+ set <name> angle <value> sets the angle of the servo-motors shaft to the value specified (in degrees).
+
+
+ Get
+
+
+ Attributes
+
+ - IODev
+ Specify which FRM to use. (Optional, only required if there is more
+ than one FRM-device defined.)
+
+ - min-pulse
+ sets the minimum puls-width to use. Defaults to 544. For most servos this translates into a rotation of 180° counterclockwise.
+ - max-pulse
+ sets the maximum puls-width to use. Defaults to 2400. For most servos this translates into a rotation of 180° clockwise
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+FRM_STEPPER
+
+ represents a stepper-motor attached to digital-i/o pins of an Arduino running Firmata
+ Requires a defined FRM-device to work.
+
+
+ Define
+
+ define <name> FRM_STEPPER [DRIVER|TWO_WIRE|FOUR_WIRE] <directionPin> <stepPin> [motorPin3 motorPin4] stepsPerRev [stepper-id]
+ Defines the FRM_STEPPER device.
+ - [DRIVER|TWO_WIRE|FOUR_WIRE] defines the control-sequence being used to drive the motor.
+
+ - DRIVER: motor is attached via a smart circuit that is controlled via two lines: 1 line defines the direction to turn, the other triggers one step per impluse.
+ - FOUR_WIRE: motor is attached via four wires each driving one coil individually.
+ - TWO_WIRE: motor is attached via two wires. This mode makes use of the fact that at any time two of the four motor
+coils are the inverse of the other two so by using an inverting circuit to drive the motor the number of control connections can be reduced from 4 to 2.
+
+
+ -
+
+ - The sequence of control signals for 4 control wires is as follows:
+
+
+Step C0 C1 C2 C3
+ 1 1 0 1 0
+ 2 0 1 1 0
+ 3 0 1 0 1
+ 4 1 0 0 1
+
+
+ - The sequence of controls signals for 2 control wires is as follows:
+(columns C1 and C2 from above):
+
+
+Step C0 C1
+ 1 0 1
+ 2 1 1
+ 3 1 0
+ 4 0 0
+
+
+
+
+ -
+ If your stepper-motor does not move or does move but only in a single direction you will have to rearrage the pin-numbers to match the control sequence.
+ that can be archived either by rearranging the physical connections, or by mapping the connection to the pin-definitions in FRM_STEPPERS define:
+ e.g. the widely used cheap 28byj-48 you can get for few EUR on eBay including a simple ULN2003 driver interface may be defined by
+ define stepper FRM_STEPPER FOUR_WIRE 7 5 6 8 64 0
+ when being connected to the arduio with:
+ motor pin1 <-> arduino pin5
+ motor pin2 <-> arduino pin6
+ motor pin3 <-> arduino pin7
+ motor pin4 <-> arduino pin8
+ motor pin5 <-> ground
+
+
+
+
+
+ Set
+
+ set <name> reset
+ - resets the reading 'position' to 0 without moving the motor
+
+ set <name> position <position> [speed] [acceleration] [deceleration]
+ - moves the motor to the absolute position specified. positive or negative integer
+ speed (10 * revolutions per minute, optional), defaults to 30, higher numbers are faster) At 2048 steps per revolution (28byj-48) a speed of 30 results in 3 rev/min
+ acceleration and deceleration are optional.
+
+
+ set <name> step <stepstomove> [speed] [accel] [decel]
+ - moves the motor the number of steps specified. positive or negative integer
+ speed, accelleration and deceleration are optional.
+
+
+
+ Get
+
+
+ Attributes
+
+ - restoreOnStartup <on|off>
+ - restoreOnReconnect <on|off>
+ - IODev
+ Specify which FRM to use. (Optional, only required if there is more
+ than one FRM-device defined.)
+
+ - >speed (same meaning as in 'set position')
+ - acceleration (same meaning as in 'set position')
+ - deceleration (same meaning as in 'set position')
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+FS20
+
+ The FS20 protocol is used by a wide range of devices, which are either of
+ the sender/sensor category or the receiver/actuator category. The radio
+ (868.35 MHz) messages are either received through an FHZ
+ or an CUL device, so this must be defined first.
+
+
+
+
+ Define
+
+ define <name> FS20 <housecode> <button>
+ [fg <fgaddr>] [lm <lmaddr>] [gm FF]
+
+
+ The values of housecode, button, fg, lm, and gm can be either defined as
+ hexadecimal value or as ELV-like "quad-decimal" value with digits 1-4. We
+ will reference this ELV-like notation as ELV4 later in this document. You
+ may even mix both hexadecimal and ELV4 notations, because FHEM can detect
+ the used notation automatically by counting the digits.
+
+
+ <housecode> is a 4 digit hex or 8 digit ELV4 number,
+ corresponding to the housecode address.
+ <button> is a 2 digit hex or 4 digit ELV4 number,
+ corresponding to a button of the transmitter.
+ - The optional
<fgaddr> specifies the function group.
+ It is a 2 digit hex or 4 digit ELV address. The first digit of the hex
+ address must be F or the first 2 digits of the ELV4 address must be
+ 44.
+ - The optional
<lmaddr> specifies the local
+ master. It is a 2 digit hex or 4 digit ELV address. The last digit of the
+ hex address must be F or the last 2 digits of the ELV4 address must be
+ 44.
+ - The optional gm specifies the global master, the address must be FF if
+ defined as hex value or 4444 if defined as ELV4 value.
+
+
+
+ Examples:
+
+ 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>]
+
+ where value is one of:
+
+ 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: set to value before switching it off
+ on-for-timer # see the note
+ on-old-for-timer # set to previous (before switching it on)
+ ramp-on-time # time to reach the desired dim value on dimmers
+ ramp-off-time # time to reach the off state on dimmers
+ reset
+ sendstate
+ timer
+ toggle # between off and previous dim val
+ on-till # Special, see the note
+
+ The set extensions are also supported.
+
+ Examples:
+
+ set lamp on
+ set lamp1,lamp2,lamp3 on
+ set lamp1-lamp3 on
+ set lamp on-for-timer 12
+
+
+
+ Notes:
+
+ - Use reset with care: the device forgets even the housecode.
+
+ - As the FS20 protocol needs about 0.22 seconds to transmit a
+ sequence, a pause of 0.22 seconds is inserted after each command.
+
+ - The FS20ST switches on for dim*%, dimup. It does not respond to
+ sendstate.
+ - If the timer is set (i.e. it is not 0) then on, dim*,
+ and *-for-timer will take it into account (at least by the FS20ST).
+
+ - The
time argument ranges from 0.25sec to 4 hours and 16
+ minutes. As the time is encoded in one byte there are only 112
+ distinct values, the resolution gets coarse with larger values. The
+ program will report the used timeout if the specified one cannot be
+ set exactly. The resolution is 0.25 sec from 0 to 4 sec, 0.5 sec
+ from 4 to 8 sec, 1 sec from 8 to 16 sec and so on. If you need better
+ precision for large values, use at which has a 1
+ sec resolution.
+ - on-till requires an absolute time in the "at" format (HH:MM:SS, HH:MM
+ or { <perl code> }, where the perl-code returns a time
+ specification).
+ If the current time is greater than the specified time, then the
+ command is ignored, else an "on" command is generated, and for the
+ given "till-time" an off command is scheduleld via the at command.
+
+
+
+
+
+ Get
+
+
+ Attributes
+
+
+ - IODev
+ Set the IO or physical device which should be used for sending signals
+ for this "logical" device. An example for the physical device is an FHZ
+ or a CUL. Note: Upon startup FHEM assigns each logical device
+ (FS20/HMS/KS300/etc) the last physical device which can receive data
+ for this type of device. The attribute IODev needs to be used only if
+ you attached more than one physical device capable of receiving signals
+ for this logical device.
+
+
+ - eventMap
+ Replace event names and set arguments. The value of this attribute
+ consists of a list of space separated values, each value is a colon
+ separated pair. The first part specifies the "old" value, the second
+ the new/desired value. If the first character is slash(/) or komma(,)
+ then split not by space but by this character, enabling to embed spaces.
+ Examples:
+ attr store eventMap on:open off:closed
+ attr store eventMap /on-for-timer 10:open/off:closed/
+ set store open
+
+
+
+
+ - dummy
+ Set the device attribute dummy to define devices which should not
+ output any radio signals. Associated notifys will be executed if
+ the signal is received. Used e.g. to react to a code from a sender, but
+ it will not emit radio signal if triggered in the web frontend.
+
+
+
+ - follow-on-for-timer
+ schedule a "setstate off;trigger off" for the time specified as argument to
+ the on-for-timer command. Or the same with on, if the command is
+ off-for-timer.
+
+
+
+ - follow-on-timer
+ Like with follow-on-for-timer schedule a "setstate off;trigger off", but
+ this time for the time specified as argument in seconds to this attribute.
+ This is used to follow the pre-programmed timer, which was set previously
+ with the timer command or manually by pressing the button on the device,
+ see your manual for details.
+
+
+
+
+ - model
+ The model attribute denotes the model type of the device.
+ The attributes will (currently) not be used by the fhem.pl directly.
+ It can be used by e.g. external programs or web interfaces to
+ distinguish classes of devices and send the appropriate commands
+ (e.g. "on" or "off" to a fs20st, "dim..%" to fs20du etc.).
+ The spelling of the model names are as quoted on the printed
+ documentation which comes which each device. This name is used
+ without blanks in all lower-case letters. Valid characters should be
+ a-z 0-9 and - (dash),
+ other characters should be ommited. Here is a list of "official"
+ 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
+
+ Receiver/Actor: fs20as1 fs20as4 fs20ms2 fs20rgbsa fs20rst
+ fs20rsu fs20sa fs20sig fs20sm4 fs20sm8 fs20st fs20su fs20sv fs20ue1
+ fs20usr fs20ws1
+
+
+
+
+ - ignore
+ Ignore this device, e.g. if it belongs to your neighbour. The device
+ won't trigger any FileLogs/notifys, issued commands will silently
+ ignored (no RF signal will be sent out, just like for the dummy attribute). The device won't appear in the
+ list command (only if it is explicitely asked for it), nor will it
+ appear in commands which use some wildcard/attribute as name specifiers
+ (see devspec). You still get them with the
+ "ignored=1" special devspec.
+
+
+ - do_not_notify
+ - showtime
+ - readingFnAttributes
+
+
+
+
+
+ Generated events:
+
+ From an FS20 device you can receive one of the following events.
+ - on
+ - off
+ - toggle
+ - dimdown
+ - dimup
+ - dimupdown
+ - on-for-timer
+ Which event is sent is device dependent and can sometimes configured on
+ the device.
+
+
+
+
+FileLog
+
+
+
+
+ Define
+
+ define <name> FileLog <filename> <regexp>
+
+
+ Log events to <filename> . The log format is
+
+ YYYY-MM-DD_HH:MM:SS <device> <event>
+
+ The regexp will be checked against the device name
+ devicename:event or timestamp:devicename:event combination.
+ The regexp must match the complete string, not just a part of it.
+
+ <filename> may contain %-wildcards of the
+ POSIX strftime function of the underlying OS (see your strftime manual).
+ Common used wildcards are:
+
+ %d day of month (01..31)
+ %m month (01..12)
+ %Y year (1970...)
+ %w day of week (0..6); 0 represents Sunday
+ %j day of year (001..366)
+ %U week number of year with Sunday as first day of week (00..53)
+ %W week number of year with Monday as first day of week (00..53)
+
+ FHEM also replaces %L by the value of the global logdir attribute.
+ Before using %V for ISO 8601 week numbers check if it is
+ correctly supported by your system (%V may not be replaced, replaced by an
+ empty string or by an incorrect ISO-8601 week number, especially
+ at the beginning of the year)
+ If you use %V you will also have to use %G
+ instead of %Y for the year!
+ Examples:
+
+ define lamplog FileLog %L/lamp.log lamp
+ define wzlog FileLog ./log/wz-%Y-%U.log
+ wz:(measured-temp|actuator).*
+ With ISO 8601 week numbers, if supported:
+ define wzlog FileLog ./log/wz-%G-%V.log
+ wz:(measured-temp|actuator).*
+
+
+
+
+
+ Set
+
+ - reopen
+
+ Reopen a FileLog after making some manual changes to the
+ logfile.
+
+
+ - addRegexpPart <device> <regexp>
+
+ add a regexp part, which is constructed as device:regexp. The parts
+ are separated by |. Note: as the regexp parts are resorted, manually
+ constructed regexps may become invalid.
+
+
+ - removeRegexpPart <re>
+
+ remove a regexp part. Note: as the regexp parts are resorted, manually
+ constructed regexps may become invalid.
+ The inconsistency in addRegexpPart/removeRegexPart arguments originates
+ from the reusage of javascript functions.
+
+
+ - absorb secondFileLog
+
+ merge the current and secondFileLog into one file, add the regexp of the
+ secondFileLog to the current one, and delete secondFileLog.
+ This command is needed to create combined plots (weblinks).
+ Notes:
+
+ - secondFileLog will be deleted (i.e. the FHEM definition).
+ - only the current files will be merged.
+ - weblinks using secondFilelog will become broken, they have to be
+ adopted to the new logfile or deleted.
+
+
+
+
+
+
+
+
+
+ Get
+
+ get <name> <infile> <outfile> <from>
+ <to> <column_spec>
+
+ Read data from the logfile, used by frontends to plot data without direct
+ access to the file.
+
+
+ - <infile>
+ Name of the logfile to grep. "-" is the current logfile, or you can
+ specify an older file (or a file from the archive).
+ - <outfile>
+ If it is "-", you get the data back on the current connection, else it
+ is the prefix for the output file. If more than one file is specified,
+ the data is separated by a comment line for "-", else it is written in
+ separate files, numerated from 0.
+
+ - <from> <to>
+ Used to grep the data. The elements should correspond to the
+ timeformat or be an initial substring of it.
+ - <column_spec>
+ For each column_spec return a set of data in a separate file or
+ separated by a comment line on the current connection.
+ Syntax: <col>:<regexp>:<default>:<fn>
+
+ - <col>
+ The column number to return, starting at 1 with the date.
+ If the column is enclosed in double quotes, then it is a fix text,
+ not a column number.
+ - <regexp>
+ If present, return only lines containing the regexp. Case sensitive.
+
+ - <default>
+ If no values were found and the default value is set, then return
+ one line containing the from value and this default. We need this
+ feature as gnuplot aborts if a dataset has no value at all.
+
+ - <fn>
+ One of the following:
+
+ - int
+ Extract the integer at the beginning og the string. Used e.g.
+ for constructs like 10%
+ - delta-h or delta-d
+ Return the delta of the values for a given hour or a given day.
+ Used if the column contains a counter, as is the case for the
+ KS300 rain column.
+ - everything else
+ The string is evaluated as a perl expression. @fld is the
+ current line splitted by spaces. Note: The string/perl
+ expression cannot contain spaces, as the part after the space
+ will be considered as the next column_spec.
+
+
+
+
+ Example:
+
+ get outlog out-2008.log - 2008-01-01 2008-01-08 4:IR:int: 9:IR::
+
+
+
+
+
+ Attributes
+
+
+
+
+ - archivecmd / archivedir / nrarchive
+ When a new FileLog file is opened, the FileLog archiver wil be called.
+ This happens only, if the name of the logfile has changed (due to
+ time-specific wildcards, see the FileLog
+ section), and there is a new entry to be written into the file.
+
+
+ If the attribute archivecmd is specified, then it will be started as a
+ shell command (no enclosing " is needed), and each % in the command
+ will be replaced with the name of the old logfile.
+
+ If this attribute is not set, but nrarchive and/or archivecmd are set,
+ then nrarchive old logfiles are kept along the current one while older
+ ones are moved to archivedir (or deleted if archivedir is not set).
+
+ Note: setting these attributes for the global instance will effect the
+ FHEM logfile only.
+
+
+ - disable
+
+
+ - logtype
+ Used by the pgm2 webfrontend to offer gnuplot/SVG images made from the
+ logs. The string is made up of tokens separated by comma (,), each
+ token specifies a different gnuplot program. The token may contain a
+ colon (:), the part before the colon defines the name of the program,
+ the part after is the string displayed in the web frontend. Currently
+ following types of gnuplot programs are implemented:
+
+ - fs20
+ Plots on as 1 and off as 0. The corresponding filelog definition
+ for the device fs20dev is:
+ define fslog FileLog log/fs20dev-%Y-%U.log fs20dev
+
+ - fht
+ Plots the measured-temp/desired-temp/actuator lines. The
+ corresponding filelog definitions (for the FHT device named
+ fht1) looks like:
+ define fhtlog1 FileLog log/fht1-%Y-%U.log fht1:.*(temp|actuator).*
+
+
+ - temp4rain10
+ Plots the temperature and rain (per hour and per day) of a
+ ks300. The corresponding filelog definitions (for the KS300
+ device named ks300) looks like:
+ define ks300log FileLog log/fht1-%Y-%U.log ks300:.*H:.*
+
+ - hum6wind8
+ Plots the humidity and wind values of a
+ ks300. The corresponding filelog definition is the same as
+ above, both programs evaluate the same log.
+
+ - text
+ Shows the logfile as it is (plain text). Not gnuplot definition
+ is needed.
+
+
+ Example:
+ attr ks300log1 logtype temp4rain10:Temp/Rain,hum6wind8:Hum/Wind,text:Raw-data
+
+
+
+
+
+
+
+
+
+GDS
+
+
+ Prerequesits
+
+
+
+ Module uses following additional Perl modules:
+ Net::FTP, List::MoreUtils, XML::Simple, Text::CSV
+ If not already installed in your environment, please install them using appropriate commands from your environment.
+
+
+
+
+
+ Define
+
+
+
+ define <name> GDS <username> <password>
+
+ This module provides connection to GDS service generated by DWD
+
+
+
+
+
+ Set-Commands
+
+
+
+ set <name> clear
+
+ Delete all a_*, c_* and g_* readings
+
+
+ set <name> conditions <stationName>
+
+ Retrieve current conditions at selected station. Data will be updated periodically.
+
+
+ set <name> help
+
+ Show a help text with available commands
+
+
+ set <name> rereadcfg
+
+ Reread all required data from DWD Server manually: station list and CAP data
+
+
+ set <name> update
+
+ Update conditions readings at selected station and restart update-timer
+
+
+ - condition readings generated by SET use prefix "c_"
+ - readings generated by SET will be updated automatically every 60 minutes
+
+
+
+
+
+ Get-Commands
+
+
+
+ get <name> alerts <region>
+
+ Retrieve alert message for selected region from DWD server
+
+
+ get <name> conditions <stationName>
+
+ Retrieve current conditions at selected station
+
+
+ get <name> conditionsmap <region>
+
+ Retrieve map (imagefile) showing current conditions at selected station
+
+
+ get <name> forecastsmap <stationName>
+
+ Retrieve map (imagefile) showing forecasts for selected region
+
+
+ get <name> help
+
+ Show a help text with available commands
+
+
+ get <name> list capstationlist|data|stations
+
+
+ - capstationlist: Retrieve list showing all defined warning regions. You can find your WARNCELLID with this list.
+ - data: List current conditions for all available stations in one single table
+ - stations: List all available stations that provide conditions data
+
+
+
+ get <name> radarmap <region>
+
+ Retrieve map (imagefile) containig radar view from selected region
+
+
+ get <name> rereadcfg
+
+ Reread all required data from DWD Server manually: station list and CAP data
+
+
+ get <name> warnings <region>
+
+ Retrieve current warnings report for selected region
+
+
+ - report type VHDL30 = regular report, issued daily
+ - report type VHDL31 = regular report, issued before weekend or national holiday
+ - report type VHDL32 = preliminary report, issued on special conditions
+ - report type VHDL33 = cancel report, issued if necessary to cancel VHDL32
+
+
+
+
+ get <name> warningssmap <region>
+
+ Retrieve map (imagefile) containig current warnings for selected region marked with symbols
+
+ All downloaded mapfiles can be found inside "GDS Files" area in left navigation bar.
+
+
+
+
+
+ Attributes
+
+ - do_not_notify
+ - readingFnAttributes
+
+ - gdsAll - defines filter for "all data" from alert message
+ - gdsDebug - defines filter for debug informations
+ - gdsSetCond - defines conditions area to be used after system restart
+ - gdsLong - show long text fields "description" and "instruction" from alert message in readings
+ - gdsPolygon - show polygon data from alert message in a reading
+
+ - gdsPassiveFtp - set to 1 to use passive FTP transfer
+ - gdsFwName - define firewall hostname in format <hostname>:<port>
+ - gdsFwType - define firewall type in a value 0..7 please refer to cpan documentation for further informations regarding firewall settings.
+
+
+
+ Generated Readings/Events:
+
+
+ - _<readingName> - debug informations
+ - a_<readingName> - weather data from CAP alert messages. Readings will NOT be updated automatically
+ - c_<readingName> - weather data from SET weather conditions. Readings will be updated every 60 minutes
+ - g_<readingName> - weather data from GET weather conditions. Readings will NOT be updated automatically
+
+
+
+ Author's notes
+
+
+ - Module uses following additional Perl modules:
+ Net::FTP, List::MoreUtils, XML::Simple, Text::CSV
+ If not already installed in your environment, please install them using appropriate commands from your environment.
+
+ - Have fun!
+
+
+
+
+
+
+
+
+
+ GEOFANCY
+
+
+ - Provides webhook receiver for geofencing via the following iOS apps:
+
+
+ -
+ Geofency
+
+ -
+ Geofancy
+
+ -
+
+ Note: GEOFANCY is an extension to FHEMWEB. You need to install FHEMWEB to use GEOFANCY.
+ Define
+
+ define <name> <infix>
+
+ Defines the webhook server. <infix> is the portion behind the FHEMWEB base URL (usually http://hostname:8083/fhem )
+
+ Example:
+
+ define geofancy GEOFANCY geo
+
+ The webhook will be reachable at http://hostname:8083/fhem/geo in that case.
+
+ Set
+
+ -
+ clear readings can be used to cleanup auto-created readings from deprecated devices.
+
+
+
+ Attributes
+
+
+ - devAlias: can be used to rename device names in the format DEVICEUUID:Aliasname. Separate using blank to rename multiple devices.
+
+
+
+ Usage information
+
+
+ Likely your FHEM installation is not reachable directly from the internet (good idea!).
+ It is recommended to have a reverse proxy like nginx or Apache in front of FHEM where you can make sure access is only possible to specific subdirectories like /fhem/geo.
+ You might also want to think about protecting the access by using HTTP Basic Authentication and encryption via SSL.
+ Also the definition of a dedicated FHEMWEB instance for that purpose might help to restrict FHEM's functionality (note that the 'hidden' attributes of FHEMWEB currently do NOT protect from just guessing/knowing the correct URL!)
+
+ To make that reverse proxy available from the internet, just forward the appropriate port via your internet router.
+
+ The actual solution on how you can securely make your Geofancy webhook available to the internet is not part of this documentation and depends on your own skills.
+
+
+ Integration with Home Automation
+
+
+ You might want to have a look to the module family of ROOMMATE, GUEST and RESIDENTS for an easy processing of GEOFANCY events.
+
+
+
+
+
+
+
+
+ GUEST
+
+
+ Define
+
+ define <rg_GuestName> GUEST [<device name of resident group>]
+
+ Provides a special dummy device to represent a guest of your home.
+ Based on the current state and other readings, you may trigger other actions within FHEM.
+
+ Used by superior module RESIDENTS but may also be used stand-alone.
+
+ Example:
+
+ # Standalone
+ define rg_Guest GUEST
+
+ # Typical group member
+ define rg_Guest GUEST rgr_Residents # to be member of resident group rgr_Residents
+
+ # Member of multiple groups
+ define rg_Guest GUEST rgr_Residents,rgr_Guests # to be member of resident group rgr_Residents and rgr_Guests
+
+
+
+ Please note the RESIDENTS group device needs to be existing before a GUEST device can become a member of it.
+
+
+
+ Set
+
+ set <rg_GuestName> <command> [<parameter>]
+
+ Currently, the following commands are defined.
+
+ -
+ location - sets reading 'location'; see attribute rg_locations to adjust list shown in FHEMWEB
+
+ -
+ mood - sets reading 'mood'; see attribute rg_moods to adjust list shown in FHEMWEB
+
+ -
+ state home,gotosleep,asleep,awoken,absent,none switch between states; see attribute rg_states to adjust list shown in FHEMWEB
+
+
+
+
+
+ Possible states and their meaning
+
+
+ This module differs between 6 states:
+
+
+ -
+ home - individual is present at home and awake
+
+ -
+ gotosleep - individual is on it's way to bed
+
+ -
+ asleep - individual is currently sleeping
+
+ -
+ awoken - individual just woke up from sleep
+
+ -
+ absent - individual is not present at home but will be back shortly
+
+ -
+ none - guest device is disabled
+
+
+
+
+
+
+ Presence correlation to location
+
+
+ Under specific circumstances, changing state will automatically change reading 'location' as well.
+
+ Whenever presence state changes from 'absent' to 'present', the location is set to 'home'. If attribute rg_locationHome was defined, first location from it will be used as home location.
+
+ Whenever presence state changes from 'present' to 'absent', the location is set to 'underway'. If attribute rg_locationUnderway was defined, first location from it will be used as underway location.
+
+
+
+
+ Auto Gone
+
+
+ Whenever an individual is set to 'absent', a trigger is started to automatically change state to 'gone' after a specific timeframe.
+ Default value is 16 hours.
+
+ This behaviour can be customized by attribute rg_autoGoneAfter.
+
+
+
+
+ Synchronizing presence with other ROOMMATE or GUEST devices
+
+
+ If you always leave or arrive at your house together with other roommates or guests, you may enable a synchronization of your presence state for certain individuals.
+ By setting attribute rg_passPresenceTo, those individuals will follow your presence state changes to 'home', 'absent' or 'gone' as you do them with your own device.
+
+ Please note that individuals with current state 'none' or 'gone' (in case of roommates) will not be touched.
+
+
+
+
+ Location correlation to state
+
+
+ Under specific circumstances, changing location will have an effect on the actual state as well.
+
+ Whenever location is set to 'home', the state is set to 'home' if prior presence state was 'absent'. If attribute rg_locationHome was defined, all of those locations will trigger state change to 'home' as well.
+
+ Whenever location is set to 'underway', the state is set to 'absent' if prior presence state was 'present'. If attribute rg_locationUnderway was defined, all of those locations will trigger state change to 'absent' as well. Those locations won't appear in reading 'lastLocation'.
+
+ Whenever location is set to 'wayhome', the reading 'wayhome' is set to '1' if current presence state is 'absent'. If attribute rg_locationWayhome was defined, LEAVING one of those locations will set reading 'wayhome' to '1' as well. So you actually have implicit and explicit options to trigger wayhome.
+ Arriving at home will reset the value of 'wayhome' to '0'.
+
+ If you are using the GEOFANCY module, you can easily have your location updated with GEOFANCY events by defining a simple NOTIFY-trigger like this:
+
+ define n_rg_Guest.location notify geofancy:currLoc_Guest.* set rg_Guest location $EVTPART1
+
+ By defining geofencing zones called 'home' and 'wayhome' in the iOS app, you automatically get all the features of automatic state changes described above.
+
+
+
+ Attributes
+
+
+ -
+ rg_autoGoneAfter - hours after which state should be auto-set to 'gone' when current state is 'absent'; defaults to 16 hours
+
+ -
+ rg_locationHome - locations matching these will be treated as being at home; first entry reflects default value to be used with state correlation; separate entries by space; defaults to 'home'
+
+ -
+ rg_locationUnderway - locations matching these will be treated as being underway; first entry reflects default value to be used with state correlation; separate entries by comma or space; defaults to "underway"
+
+ -
+ rg_locationWayhome - leaving a location matching these will set reading wayhome to 1; separate entries by space; defaults to "wayhome"
+
+ -
+ rg_locations - list of locations to be shown in FHEMWEB; separate entries by comma only and do NOT use spaces
+
+ -
+ rg_moodDefault - the mood that should be set after arriving at home or changing state from awoken to home
+
+ -
+ rg_moodSleepy - the mood that should be set if state was changed to gotosleep or awoken
+
+ -
+ rg_moods - list of moods to be shown in FHEMWEB; separate entries by comma only and do NOT use spaces
+
+ -
+ rg_passPresenceTo - synchronize presence state with other GUEST or GUEST devices; separte devices by space
+
+ -
+ rg_realname - whenever GUEST wants to use the realname it uses the value of attribute alias or group; defaults to group
+
+ -
+ rg_showAllStates - states 'asleep' and 'awoken' are hidden by default to allow simple gotosleep process via devStateIcon; defaults to 0
+
+ -
+ rg_states - list of states to be shown in FHEMWEB; separate entries by comma only and do NOT use spaces; unsupported states will lead to errors though
+
+
+
+
+
+ Generated Readings/Events:
+
+
+ -
+ durTimerAbsence - timer to show the duration of absence from home in minutes
+
+ -
+ durTimerPresence - timer to show the duration of presence at home in minutes
+
+ -
+ durTimerSleep - timer to show the duration of sleep in minutes
+
+ -
+ lastArrival - timestamp of last arrival at home
+
+ -
+ lastAwake - timestamp of last sleep cycle end
+
+ -
+ lastDeparture - timestamp of last departure from home
+
+ -
+ lastDurAbsence - duration of last absence from home in following format: hours:minutes:seconds
+
+ -
+ lastDurPresence - duration of last presence at home in following format: hours:minutes:seconds
+
+ -
+ lastDurSleep - duration of last sleep in following format: hours:minutes:seconds
+
+ -
+ lastLocation - the prior location
+
+ -
+ lastMood - the prior mood
+
+ -
+ lastSleep - timestamp of last sleep cycle begin
+
+ -
+ lastState - the prior state
+
+ -
+ location - the current location
+
+ -
+ presence - reflects the home presence state, depending on value of reading 'state' (can be 'present' or 'absent')
+
+ -
+ mood - the current mood
+
+ -
+ state - reflects the current state
+
+ -
+ wayhome - depending on current location, it can become '1' if individual is on his/her way back home
+
+ -
+
+
+ The following readings will be set to '-' if state was changed to 'none':
+ lastArrival, lastDurAbsence, lastLocation, lastMood, location, mood
+
+
+
+
+
+
+HCS
+
+ Defines a virtual device for monitoring thermostats (FHT, HM-CC-TC, MAX) to control a central
+ heating unit.
+
+
+ Define
+
+ define <name> HCS <device>
+
+
+
+ <device> the name of a predefined device to switch.
+
+
+
+ The HCS (heating control system) device monitors the state of all detected thermostats
+ in a free definable interval (by default: 10 min).
+
+
+ Regulation for heating requirement or suppression of the request can be controlled by
+ valve position or measured temperature (default) using also free definable thresholds.
+ In doing so, the HCS device also includes the hysteresis between two states.
+
+
+ Example for monitoring measured temperature:
+
+ Threshold temperature for heating requirement: 0.5 (default)
+ Threshold temperature for idle: 0.5 (default)
+
+
+ Heating is required when the measured temperature of a thermostat is lower than
+ 0.5° Celsius as the desired temperature. HCS then activates the defined device
+ until the measured temperature of the thermostat is 0.5° Celsius higher as the
+ desired temperature (threshold for idle). In this example, both tresholds are equal.
+
+
+
+ Example for monitoring valve position:
+
+ Threshold valve position for heating requirement: 40% (default)
+ Threshold valve position for idle: 35% (default)
+
+
+ Heating is required when the "open" position of a valve is more than 40%. HCS then
+ activates the defined device until the "open" position of the valve has lowered to
+ 35% or less (threshold for idle).
+
+
+
+ The HCS device supports an optional eco mode. The threshold oriented regulation by
+ measured temperature or valve position can be overridden by setting economic thresholds.
+
+
+ Example:
+
+ Threshold temperature economic mode on: 15° Celsius
+ Threshold temperature economic mode off: 25° Celsius
+
+
+ HCS activates the defined device until the measured temperature of one ore more
+ thermostats is lower or equal than 15° Celsius. If a measured temperature of one
+ or more thermostats is higher or equal than 25° Celsius, HCS switch of the defined
+ device (if none of the measured temperatures of all thermostats is lower or equal as
+ 15° Celsius).
+
+
+
+ In addition, the HCS device supports an optional temp-sensor. The threshold and economic
+ oriented regulation can be overriden by the reading of the temp-sensor (overdrive mode).
+
+
+ Example:
+
+ Threshold temperature reading for heating requirement: 10° Celsius
+ Threshold temperature reading for idle: 18° Celsius
+
+
+ Is a measured temperature ore valve position reaching or exceeding the threshold for
+ heating requirement, but the temperature reading is more than 18° Celcius, the
+ selected device will stay deactivated. The measured temperature or valve-position
+ oriented regulation has been overridden by the temperature reading in this example.
+
+
+
+ The HCS device automatically detects devices which are ignored. Furthermore, certain
+ devices can also be excluded of the monitoring manually.
+
+
+ To reduce the transmission load, use the attribute event-on-change-reading, e.g.
+ attr <name> event-on-change-reading state,devicestate,eco,overdrive
+
+
+ To avoid frequent switching "on" and "off" of the device, a timeout (in minutes) can be set
+ using the attribute idleperiod .
+
+
+
+ Get
+
+ values
+ returns the actual values of each device
+
+
+
+
+
+ Set
+
+ eco <on>|<off>
+ enable (on ) or disable (off ) the economic mode.
+
+ interval <value>
+ value modifies the interval of reading the actual valve positions.
+ The unit is minutes.
+
+ mode <thermostat>|<valve>
+ changes the operational mode:
+ thermostat controls the heating demand by defined temperature
+ thresholds.
+ valve controls the heating demand by defined valve position thresholds.
+
+ on
+ restarts the monitoring after shutdown by off switch.
+ HCS device starts up automatically upon FHEM start or after new device implementation!
+
+ off
+ shutdown of monitoring, can be restarted by using the on command.
+
+
+
+
+
+ Attributes
+
+ deviceCmdOn (mandatory)
+ command to activate the device, e.g. on .
+ Default value: on
+
+ deviceCmdOff (mandatory)
+ command to deactivate the device, e.g. off .
+ Default value: off
+
+ ecoTemperatureOn (Required by eco mode)
+ defines threshold for measured temperature upon which device is allways switched on
+
+ ecoTemperatureOff (Required by eco mode)
+ defines threshold for measured temperature upon which device is switched off
+
+ exclude (optional)
+ space or comma separated list of devices (FHT or HM-CC-TC) for excluding from
+ monitoring
+
+ idleperiod (mandatory)
+ locks the device to be switched for the specified period. The unit is minutes.
+ Default value: 10
+
+ mode (mandatory)
+ defines the operational mode:
+ thermostat controls the heating demand by defined temperature
+ thresholds.
+ valve controls the heating demand by defined valve position thresholds.
+ Default value: thermostat
+
+ sensor (optional)
+ device name of the temp-sensor
+
+ sensorThresholdOn (Required by sensor )
+ threshold for temperature reading activating the defined device
+ Must be set if sensor has been defined
+
+ sensorThresholdOff (Required by sensor )
+ threshold for temperature reading deactivating the defined device.
+ Must be set if sensor has been defined
+
+ sensorReading (Required by sensor )
+ name which is used for saving the "reading" of the defined temp-sensor.
+
+ thermostatThresholdOn (Required by operational mode thermostat )
+ defines delta threshold between desired and measured temperature upon which device
+ is switched on (heating required).
+ Default value: 0.5
+
+ thermostatThresholdOff (Required by operational mode thermostat )
+ defines delta threshold between desired and measured temperature upon which
+ device is switched off (idle).
+ Default value: 0.5
+
+ valveThresholdOn (Required by operational mode valve )
+ defines threshold of valve-position upon which device is switched on (heating
+ required).
+ Default value: 40
+
+ valveThresholdOff (Required by operational mode valve )
+ defines threshold of valve-position upon which device is switched off (idle).
+ Default value: 35
+
+ disable
+ do_not_notify
+ event-on-change-reading
+ default value: state,devicestate,eco,overdrive
+
+ event-on-update-reading
+ loglevel
+ loglevel 3 (or lower) shows a complete statistic of scanned devices (FHT or HM-CC-TC).
+ loglevel 4 shows a short summary of scanned devices.
+ loglevel 5 suppressed the above messages.
+
+
+
+
+
+
+
+
+
+
+HMLAN
+
+ The HMLAN is the fhem module for the eQ-3 HomeMatic LAN Configurator.
+ A description on how to use hmCfgUsb can be found follwing the link.
+
+ The fhem module will emulate a CUL device, so the CUL_HM module can be used to define HomeMatic devices.
+
+ In order to use it with fhem you must disable the encryption first with the "HomeMatic Lan Interface Configurator"
+ (which is part of the supplied Windows software), by selecting the device, "Change IP Settings", and deselect "AES Encrypt Lan Communication".
+
+ This device can be used in parallel with a CCU and (readonly) with fhem. To do this:
+
+ - start the fhem/contrib/tcptee.pl program
+ - redirect the CCU to the local host
+ - disable the LAN-Encryption on the CCU for the Lan configurator
+ - set the dummy attribute for the HMLAN device in fhem
+
+
+
+ Define
+
+ define <name> HMLAN <ip-address>[:port]
+
+ port is 1000 by default.
+ If the ip-address is called none, then no device will be opened, so you can experiment without hardware attached.
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+ - addvaltrigger
+ - do_not_notify
+ - dummy
+ - logIDs
+ enables selective logging of HMLAN messages. A list of HMIds or names can be
+ entered, comma separated, which shall be logged.
+ The attribute only allows device-IDs, not channel IDs.
+ Channel-IDs will be modified to device-IDs automatically.
+ all will log raw messages for all HMIds
+ sys will log system related messages like keep-alive
+ in order to enable all messages set "all,sys"
+
+ - hmMsgLowLimit
+ max messages level of HMLAN allowed for low-level message queue
+ to be executed. Above this level processing will be postponed.
+ HMLAN will allow a max of messages per hour, it will block sending otherwise.
+ After about 90% messages the low-priority queue (currently only CUL_HM autoReadReg)
+ will be delayed until the condition is cleared.
+ hmMsgLowLimit allowes to reduce this level further.
+ Note that HMLAN transmitt-level calculation is based on some estimations and
+ has some tolerance.
+
+ - hmId
+ - hmKey
+ - hmKey2
+ - hmKey3
+ - hmKey4
+ - hmKey5
+ AES keys for the HMLAN adapter.
+ The key is converted to a hash. If a hash is given directly it is not converted but taken directly.
+ Therefore the original key cannot be converted back
+
+ - hmProtocolEvents
+ - respTime
+ Define max response time of the HMLAN adapter in seconds. Default is 1 sec.
+ Longer times may be used as workaround in slow/instable systems or LAN configurations.
+ - wdTimer
+ Time in sec to trigger HMLAN. Values between 5 and 25 are allowed, 25 is default.
+ It is not recommended to change this timer. If problems are detected with
+ HLMLAN disconnection it is advisable to resolve the root-cause of the problem and not symptoms.
+ - hmLanQlen
+ defines queuelength of HMLAN interface. This is therefore the number of
+ simultanously send messages. increasing values may cause higher transmission speed.
+ It may also cause retransmissions up to data loss.
+ Effects can be observed by watching protocol events
+ 1 - is a conservatibe value, and is default
+ 5 - is critical length, likely cause message loss
+
+ parameter
+
+ - assignedIDs
+ HMIds that are assigned to HMLAN and will be handled. e.g. ACK will be generated internally
+ - assignedIDsCnt
+ number of IDs that are assigned to HMLAN by FHEM
+ - assignedIDsReport
+ number of HMIds that HMLAN reports are assigned. This should be identical
+ to assignedIDsCnt
+ - msgKeepAlive
+ performance of keep-alive messages.
+ dlyMax: maximum delay of sheduled message-time to actual message send.
+ bufferMin: minimal buffer left to before HMLAN would likely disconnect
+ due to missing keepAlive message. bufferMin will be reset to 30sec if
+ attribut wdTimer is changed.
+ if dlyMax is high (several seconds) or bufferMin goes to "0" (normal is 4) the system
+ suffers on internal delays. Reasons for the delay might be explored. As a quick solution
+ wdTimer could be decreased to trigger HMLAN faster.
+ - msgLoadEst
+ estimation of load of HMLAN. As HMLAN has a max capacity of message transmit per hour
+ FHEM tries to estimate usage - see also
+ hmMsgLowLimit
+ - msgParseDly
+ calculates the delay of messages in ms from send in HMLAN until processing in FHEM.
+ It therefore gives an indication about FHEM system performance.
+
+
+ parameter and readings
+
+ - prot_disconnect
recent HMLAN disconnect
+ - prot_init
recent HMLAN init
+ - prot_keepAlive
HMLAN disconnect likely do to slow keep-alive sending
+ - prot_ok
recent HMLAN ok condition
+ - prot_timeout
recent HMLAN timeout
+ - prot_Warning-HighLoad
high load condition entered - HMLAN has about 10% performance left
+ - prot_ERROR-Overload
overload condition - HMLAN will receive bu tno longer transmitt messages
+ - prot_Overload-released
overload condition released - normal operation possible
+
+
+
+
+
+HMS
+
+
+ Define
+
+ define <name> HMS <housecode>
+
+
+ <housecode> is a four digit hex number,
+ corresponding to the address of the HMS device.
+
+
+ Examples:
+
+ Notes:
+
+ - Currently supported devices are the HMS100-T HMS100-TF HMS100-WD
+ HMS100-MG HMS100-TFK HMS100-CO HMS100-FIT RM100-2 RM100-3
+
+ - The housecode of the HMS devices may change if the battery is renewed.
+ In order to make life easier, you can define a "wildcard" device for each
+ type of HMS device. First the real device-id will be checked, then the
+ wildcard device id. The wildcards are:
+
+ - 1000 for the HMS100-TF
+ - 1001 for the HMS100-T
+ - 1002 for the HMS100-WD
+ - 1003 for the RM100-2
+ - 1004 for the HMS100-TFK
+ - 1006 for the HMS100-MG
+ - 1008 for the HMS100-CO
+ - 100e for the HMS100-FIT
+
+
+
+ - Some battery low notifications are not yet implemented (RM100,
+ HMS100WD).
+ - Please test your installation before relying on the
+ functionality.
+
+
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+
+HMinfo
+
+
+ HMinfo is a module to support getting an overview of
+ eQ-3 HomeMatic devices as defines in CUL_HM.
+ Status information and counter
+ HMinfo gives an overview on the CUL_HM installed base including current conditions.
+ Readings and counter will not be updated automatically due to performance issues.
+ Command update must be used to refresh the values.
+
+ Webview of HMinfo will provide details, basically counter about how
+ many CUL_HM entities experience exceptional conditions. Areas provided are
+
+ - Action Detector status
+ - CUL_HM related IO devices and condition
+ - Device protocol events which are related to communication errors
+ - count of certain readings (e.g. batterie) and conditions - attribut controlled
+ - count of error condition in readings (e.g. overheat, motorError) - attribut controlled
+
+
+
+ It also allows some HM wide commands such
+ as store all collected register settings.
+
+ Commands will be executed on all HM entities of the installation.
+ If applicable and evident execution is restricted to related entities.
+ In fact, rssi is executed on devices only because channels do not support rssi values.
+ Filter
+ can be applied as following:
+ set <name> <cmd> <filter> [<param>]
+ whereby filter has two segments, typefilter and name filter
+ [-dcasev] [-f <filter>]
+ filter for types
+
+ - d - device :include devices
+ - c - channels :include channels
+ - v - virtual :supress fhem virtual
+ - p - physical :supress physical
+ - a - aktor :supress actor
+ - s - sensor :supress sensor
+ - e - empty :include results even if requested fields are empty
+
+ and/or filter for names:
+
+ - -f <filter> :regexp to filter entity names
+
+ Example:
+
+ set hm param -d -f dim state # display param 'state' for all devices whos name contains dim
+ set hm param -c -f ^dimUG$ peerList # display param 'peerList' for all channels whos name is dimUG
+ set hm param -dcv expert # get attribut expert for all channels,devices or virtuals
+
+
+
+ Define
+
+ define <name> HMinfo
+ Just one entity needs to be defined without any parameter.
+
+
+ Get
+
+ - models
+ list all HM models that are supported in FHEM
+
+ - param [filter] <name> <name>...
+ returns a table parameter values (attribute, readings,...)
+ for all entities as a table
+
+ - register [filter]
+ provides a tableview of register of an entity
+
+ - regCheck [filter]
+ performs a consistency check on register readings for completeness
+
+ - peerCheck [filter]
+ performs a consistency check on peers. If a peer is set in one channel
+ this funktion will search wether the peer also exist on the opposit side.
+
+ - peerXref [filter]
+ provides a cross-reference on peerings, a kind of who-with-who summary over HM
+
+ - configCheck [filter]
+ performs a consistency check of HM settings. It includes regCheck and peerCheck
+
+ - templateList [<name>]
+ list defined templates. If no name is given all templates will be listed
+
+
+ - msgStat [filter]
+ statistic about message transferes over a week
+
+ - protoEvents [filter]
+ this is likely a very important view for message incidents.
+ Information about pending commands and - much more relevant - about failed executions
+ is given in a table over all devices.
+ Consider to clear this statistic use clear Protocol.
+
+ - rssi [filter]
+ statistic over rssi data for HM entities.
+
+
+ - templateChk [filter] <template> <peer:[long|short]> [<param1> ...]
+ verifies if the register-readings comply to the template
+ Parameter are identical to templateSet
+ The procedure will check if the register values match the ones provided by the template
+ If no peer is necessary use none to skip this entry
+ Example to verify settings
+
+ 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
+
+ even though the commands are more a get funktion they are implemented
+ as set to allow simple web interface usage
+
+ - update
+ updates HM status counter.
+
+
+
+ - autoReadReg [filter]
+ schedules a read of the configuration for the CUL_HM devices with attribut autoReadReg set to 1 or higher.
+
+ - clear [filter] [Protocol|readings|msgStat|register|rssi]
+ executes a set clear ... on all HM entities
+
+ - Protocol relates to set clear msgEvents
+ - readings relates to set clear readings
+ - rssi clears all rssi counters
+ - msgStat clear HM general message statistics
+ - register clears all register-entries in readings
+
+
+ - saveConfig [filter] [<file>]
+ performs a save for all HM register setting and peers. See CUL_HM saveConfig.
+ purgeConfig will be executed automatically if the stored filesize exceeds 1MByte.
+
+ - archConfig [filter] [<file>]
+ performs saveConfig for entities that appeare to have achanged configuration.
+ It is more conservative that saveConfig since incomplete sets are not stored.
+ option -a force an archieve for all devices that have a complete set of data
+
+ - loadConfig [filter] [<file>]
+ loads register and peers from a file saved by saveConfig.
+ It should be used carefully since it will add data to FHEM which cannot be verified. No readings will be replaced, only
+ missing readings will be added. The command is mainly meant to be fill in readings and register that are
+ hard to get. Those from devices which only react to config may not easily be read.
+ Therefore it is strictly up to the user to fill valid data. User should consider using autoReadReg for devices
+ that can be read.
+ The command will update FHEM readings and attributes. It will not reprogramm any device.
+
+ - purgeConfig [filter] [<file>]
+ purge (reduce) the saved config file. Due to the cumulative storage of the register setting
+ purge will use the latest stored readings and remove older one.
+ See CUL_HM saveConfig.
+
+
+
+ - tempList [filter][save|restore|verify] [<file>]
+ this function supports handling of tempList for thermstates.
+ It allows templists to be saved in a separate file, verify settings against the file
+ and write the templist of the file to the devices.
+ - save saves tempList readings of the system to the file.
+ Note that templist as available in FHEM is put to the file. It is up to the user to make
+ sure the data is actual
+ Storage is not cumulative - former content of the file will be removed
+ - restore available templist as defined in the file are written directly
+ to the device
+ - verify file data is compared to readings as present in FHEM. It does not
+ verify data in the device - user needs to ensure actuallity of present readings
+
+ - filename is the name of the file to be used. Default ist tempList.cfg
+ File example
+
+ 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
+
+ File keywords
+ - entities comma separated list of entities which refers to the temp lists following.
+ The actual entity holding the templist must be given - which is channel 04 for RTs or channel 02 for TCs
+ - tempList... time and temp couples as used in the set tempList commands
+
+
+ - tempListTmpl [filter][templateName][verify|restore] [<file>]
+ program one or more thermostat lists. The list of thermostats is selected by filter.
+
+ - templateName is the name of the template as being named in the file. The file format ist
+ identical to tempList. If the entity in the file matches templateName the subsequent
+ temp-settings from the file are bing programmed to all Thermostats that match the filter
+ - file name of the file to be used. Default: tempList.cfg
+
+
+
+ - cpRegs <src:peer> <dst:peer>
+ allows to copy register, setting and behavior of a channel to
+ another or for peers from the same or different channels. Copy therefore is allowed
+ intra/inter device and intra/inter channel.
+ src:peer is the source entity. Peer needs to be given if a peer behabior beeds to be copied
+ dst:peer is the destination entity.
+ Example
+
+ set hm cpRegs blindR blindL # will copy all general register (list 1)for this channel from the blindR to the blindL entity.
+ This includes items like drive times. It does not include peers related register (list 3/4)
+ set hm cpRegs blindR:Btn1 blindL:Btn2 # copy behavior of Btn1/blindR relation to Btn2/blindL
+ set hm cpRegs blindR:Btn1 blindR:Btn2 # copy behavior of Btn1/blindR relation to Btn2/blindR, i.e. inside the same Actor
+
+
+ Restrictions:
+
+ cpRegs will not add any peers or read from the devices. It is up to the user to read register in advance
+ cpRegs is only allowed between identical models
+ cpRegs expets that all readings are up-to-date. It is up to the user to ensure data consistency.
+
+
+ - templateDef <name> <param> <desc> <reg1:val1> [<reg2:val2>] ...
+ define a template.
+ param gives the names of parameter necesary to execute the template. It is template dependant
+ and may be onTime or brightnesslevel. A list of parameter needs to be separated with colon
+ param1:param2:param3
+ if del is given as parameter the template is removed
+ desc shall give a description of the template
+ reg:val is the registername to be written and the value it needs to be set to.
+ In case the register is from link set and can destinguist between long and short it is necessary to leave the
+ leading sh or lg off.
+ if parameter are used it is necessary to enter p. as value with p0 first, p1 second parameter
+
+ Example
+
+ set hm templateDef SwOnCond level:cond "my description" CtValLo:p0 CtDlyOn:p1 CtOn:geLo
+
+
+ - templateSet <entity> <template> <peer:[long|short]> [<param1> ...]
+ sets a bunch of register accroding to a given template. Parameter may be added depending on
+ the template setup.
+ templateSet will collect and accumulate all changes. Finally the results are written streamlined.
+ entity: peer is the source entity. Peer needs to be given if a peer behabior beeds to be copied
+ template: one of the programmed template
+ peer: [long|short]:if necessary a peer needs to be given. If no peer is used enter '0'.
+ with a peer it should be given whether it is for long or short keypress
+ param: number and meaning of parameter depends on the given template
+ Example could be (templates not provided, just theoretical)
+
+ set hm templateSet Licht1 staircase FB1:short 20
+ set hm templateSet Licht1 staircase FB1:long 100
+
+ Restrictions:
+
+ User must ensure to read configuration prior to execution.
+ templateSet may not setup a complete register block but only a part if it. This is up to template design.
+
+
+
+
+
+
+
+
+ Get
+
+
+
+ Attributes
+
+ - sumStatus
+ Warnings: list of readings that shall be screend and counted based on current presence.
+ I.e. counter is the number of entities with this reading and the same value.
+ Readings to be searched are separated by comma.
+ Example:
+
+ attr hm sumStatus battery,sabotageError
+
+ will cause a reading like
+ W_sum_batterie ok:5 low:3
+ W_sum_sabotageError on:1
+
+ Note: counter with '0' value will not be reported. HMinfo will find all present values autonomously
+ Setting is meant to give user a fast overview of parameter that are expected to be system critical
+
+ - sumERROR
+ Similar to sumStatus but with a focus on error conditions in the system.
+ Here user can add readingvalues that are not displayed. I.e. the value is the
+ good-condition that will not be counted.
+ This way user must not know all error values but it is sufficient to supress known non-ciritical ones.
+
+ Example:
+
+ attr hm sumERROR battery:ok,sabotageError:off,overheat:off,Activity:alive:unknown
+
+ will cause a reading like
+
+ ERR_batterie low:3
+ ERR_sabotageError on:1
+ ERR_overheat on:3
+ ERR_Activity dead:5
+
+
+ - autoUpdate
+ retriggers the command update periodically.
+ Example:
+
+ attr hm autoUpdate 00:10
+
+ will trigger the update every 10 min
+
+ - autoArchive
+ if set fhem will update the configFile each time the new data is available.
+ The update will happen with autoUpdate. It will not
+ work it autoUpdate is not used.
+ see also archConfig
+
+
+ - hmAutoReadScan
+ defines the time in seconds CUL_HM tries to schedule the next autoRead
+ from the queue. Despite this timer FHEM will take care that only one device from the queue will be
+ handled at one point in time. With this timer user can stretch timing even further - to up to 300sec
+ min delay between execution.
+ Setting to 1 still obeys the "only one at a time" prinzip.
+ Note that compressing will increase message load while stretch will extent waiting time.
+
+ - hmIoMaxDly
+ max time in seconds CUL_HM stacks messages if the IO device is not ready to send.
+ If the IO device will not reappear in time all command will be deleted and IOErr will be reported.
+ Note: commands will be executed after the IO device reappears - which could lead to unexpected
+ activity long after command issue.
+ default is 60sec. max value is 3600sec
+
+ - configDir
+ default directory where to store and load configuration files from.
+ This path is used as long as the path is not given in a filename of
+ a given command.
+ It is used by commands like tempList or saveConfig
+
+ - configFilename
+ default filename used by
+ saveConfig,
+ purgeConfig,
+ loadConfig
+
+ - hmManualOper
+ set to 1 will prevent any automatic operation, update or default settings
+ in CUL_HM.
+
+
+
+
+ Variables
+
+ - I_autoReadPend: Info:list of entities which are queued to retrieve config and status.
+ This is typically scheduled thru autoReadReg
+ - ERR___rssiCrit: Error:list of devices with RSSI reading n min level
+ - W_unConfRegs: Warning:list of entities with unconfirmed register changes. Execute getConfig to clear this.
+ - I_rssiMinLevel: Info:counts of rssi min readings per device, clustered in blocks
+
+ - ERR__protocol: Error:count of non-recoverable protocol events per device.
+ Those events are NACK, IOerr, ResendFail, CmdDel, CmdPend.
+ Counted are the number of device with those events, not the number of events!
+ - ERR__protoNames: Error:name-list of devices with non-recoverable protocol events
+ - I_HM_IOdevices: Info:list of IO devices used by CUL_HM entities
+ - I_actTotal: Info:action detector state, count of devices with ceratin states
+ - ERRactNames: Error:names of devices that are not alive according to ActionDetector
+ - C_sumDefined: Count:defined entities in CUL_HM. Entites might be count as
+ device AND channel if channel funtion is covered by the device itself. Similar to virtual
+ - ERR_<reading>: Error:count of readings as defined in attribut
+ sumERROR
+ that do not match the good-content.
+ - ERR_names: Error:name-list of entities that are counted in any ERR_<reading>
+ W_sum_<reading>: count of readings as defined in attribut
+ sumStatus.
+ Example:
+
+ 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;
+
+
+
+
+HTTPMOD
+
+
+ This module provides a generic way to retrieve information from devices with an HTTP Interface and store them in Readings.
+ It queries a given URL with Headers and data defined by attributes.
+ From the HTTP Response it extracts Readings named in attributes using Regexes also defined by attributes.
+
+ Prerequisites
+
+
+ -
+ This Module uses the non blocking HTTP function HttpUtils_NonblockingGet provided by FHEM's HttpUtils in a new Version published in December 2013.
+ If not already installed in your environment, please update FHEM or install it manually using appropriate commands from your environment.
+
+
+
+
+
+
+ Define
+
+
+ define <name> HTTPMOD <URL> <Interval>
+
+ The module connects to the given URL every Interval seconds, sends optional headers and data and then parses the response
+
+ Example:
+
+ define PM HTTPMOD http://MyPoolManager/cgi-bin/webgui.fcgi 60
+
+
+
+
+ Configuration of HTTP Devices
+
+ Specify optional headers as attr requestHeader1 to attr requestHeaderX ,
+ optional POST data as attr requestData and then
+ pairs of attr readingNameX and attr readingRegexX to define which readings you want to extract from the HTTP
+ response and how to extract them.
+
+ Example for a PoolManager 5:
+
+ define PM HTTPMOD http://MyPoolManager/cgi-bin/webgui.fcgi 60
+ attr PM readingsName1 PH
+ attr PM readingsName2 CL
+ attr PM readingsName3 TEMP
+ attr PM readingsRegex1 34.4001.value":[ \t]+"([\d\.]+)"
+ attr PM readingsRegex2 34.4008.value":[ \t]+"([\d\.]+)"
+ attr PM readingsRegex3 34.4033.value":[ \t]+"([\d\.]+)"
+ attr PM requestData {"get" :["34.4001.value" ,"34.4008.value" ,"34.4033.value", "14.16601.value", "14.16602.value"]}
+ attr PM requestHeader1 Content-Type: application/json
+ attr PM requestHeader2 Accept: */*
+ attr PM stateFormat {sprintf("%.1f Grad, PH %.1f, %.1f mg/l Chlor", ReadingsVal($name,"TEMP",0), ReadingsVal($name,"PH",0), ReadingsVal($name,"CL",0))}
+
+ If you need to do some calculation on a raw value before it is used as a reading you can define the attribute readingsExprX
+ which can use the raw value from the variable $val
+
+ Example:
+
+ attr PM readingsExpr3 $val * 10
+
+
+
+
+
+ Set-Commands
+
+
+
+ Get-Commands
+
+
+
+ Attributes
+
+ - do_not_notify
+ - readingFnAttributes
+
+ - requestHeader.*
+ Define an additional HTTP Header to set in the HTTP request
+ - requestData
+ POST Data to be sent in the request. If not defined, it will be a GET request as defined in HttpUtils used by this module
+ - readingsName.*
+ the name of a reading to extract with the corresponding readingRegex
+ - readingsRegex.*
+ defines the regex to be used for extracting the reading. The value to extract should be in a sub expression e.g. ([\d\.]+) in the above example
+ - readingsExpr.*
+ defines an expression that is used in an eval to compute the readings value. The raw value will be in the variable $val.
+
+
+
+ Author's notes
+
+ - If you don't know which URLs, headers or POST data your web GUI uses, you might try a local proxy like BurpSuite to track requests and responses
+
+
+
+
+HTTPSRV
+
+ Provides a mini HTTP server plugin for FHEMWEB. It serves files from a given directory.
+
+ HTTPSRV is an extension to FHEMWEB. You must install FHEMWEB to use HTTPSRV.
+
+
+ Define
+
+ define <name> <infix> <directory> <friendlyname>
+
+ Defines the HTTP server. <infix> is the portion behind the FHEMWEB base URL (usually
+ http://hostname:8083/fhem ), <directory> is the absolute path the
+ files are served from, and <friendlyname> is the name displayed in the side menu of FHEMWEB.
+
+ Example:
+
+ define myJSFrontend HTTPSRV jsf /usr/share/jsfrontend My little frontend
+
+
+
+
+
+ Set
+
+
+
+
+ Attributes
+
+
+ - directoryindex: if the request is sent with no filename, i.e. the infix (with or without trailing slash) only, the file given in this attribute is loaded. Defaults to
index.html .
+
+
+
+ Usage information
+
+
+
+
+
+
+HUEBridge
+
+ Module to access the bridge of the phillips hue lighting system.
+
+ The actual hue bulbs, living colors or living whites devices are defined as HUEDevice devices.
+
+
+ All newly found devices and groups are autocreated at startup and added to the room HUEDevice.
+
+
+ Notes:
+
+ - This module needs
JSON .
+ Please install with 'cpan install JSON ' or your method of choice.
+ - autocreate only works for the first bridge. devices on other bridges have to be manualy defined.
+
+
+
+
+
+ Define
+
+ define <name> HUEBridge [<host>] [<interval>]
+
+
+ Defines a HUEBridge device with address <host>.
+
+ If [<host>] is not given the module will try to autodetect the bridge with the hue portal services.
+
+ The bridge status will be updated every <interval> seconds. The default and minimum is 60.
+
+ After a new bridge is created the pair button on the bridge has to be pressed.
+
+ Examples:
+
+ define bridge HUEBridge 10.0.1.1
+
+
+
+
+ Set
+
+ - devices
+ list the devices known to the bridge.
+ - groups
+ list the groups known to the bridge.
+
+
+
+ Set
+
+ - statusRequest
+ Update bridge status.
+ - swupdate
+ Update bridge firmware. This command is only available if a new firmware is available (indicated by updatestate with a value of 2. The version and release date is shown in the reading swupdate.
+ A notify of the form define HUEUpdate notify bridge:swupdate.* {...} can be used to be informed about available firmware updates.
+
+
+
+
+HUEDevice
+
+
+
+ Define
+
+ define <name> HUEDevice [group] <id> [<interval>]
+
+
+ Defines a device connected to a HUEBridge.
+
+ This can be a hue bulb, a living colors light or a living whites bulb or dimmer plug.
+
+ The device status will be updated every <interval> seconds. The default and minimum is 60. Groups are updated only on definition and statusRequest
+
+ Examples:
+
+ define bulb HUEDevice 1
+ define LC HUEDevice 2
+ define allLights HUEDevice group 0
+
+
+
+
+ Readings
+
+ - bri
+ the brightness reported from the device. the value can be betwen 1 and 254
+ - colormode
+ the current colormode
+ - ct
+ the colortemperature in mireds and kelvin
+ - hue
+ the current hue
+ - level
+ the current brightness in percent
+ - onoff
+ the current on/off state as 0 or 1
+ - sat
+ the current saturation
+ - xy
+ the current xy color coordinates
+ - state
+ the current state
+
+ Notes:
+
+ - groups have no readings.
+ - not all readings show the actual device state. all readings not related to the current colormode have to be ignored.
+ - the actual state of a device controlled by a living colors or living whites remote can be different and will
+ be updated after some time.
+
+
+
+
+ Set
+
+ - on [<ramp-time>]
+ - off [<ramp-time>]
+ - toggle [<ramp-time>]
+ - statusRequest
+ Request device status update.
+ - pct <value> [<ramp-time>]
+ dim to <value>
+ Note: the FS20 compatible dimXX% commands are also accepted.
+ - color <value>
+ set colortemperature to <value> kelvin.
+ - bri <value> [<ramp-time>]
+ set brighness to <value>; range is 1-254.
+ - dimUp
+ - dimDown
+ - ct <value> [<ramp-time>]
+ set colortemperature to <value> mireds; range is 154-500.
+ - hue <value> [<ramp-time>]
+ set hue to <value>; range is 0-65535.
+ - sat <value> [<ramp-time>]
+ set saturation to <value>; range is 0-254.
+ - xy <x>,<y> [<ramp-time>]
+ set the xy color coordinates to <x>,<y>
+ - alert [none|select|lselect]
+ - effect [none|colorloop]
+ - transitiontime <time>
+ set the transitiontime to <time> 1/10s
+ - rgb <rrggbb>
+ - delayedUpdate
+ - immediateUpdate
+ - set extensions are supported.
+
+ Note:
+
+ - <ramp-time> is given in seconds
+ - multiple paramters can be set at once separated by
:
+ Examples:
+ set LC on : transitiontime 100
+ set bulb on : bri 100 : color 4000
+
+
+
+
+ Get
+
+ - rgb
+ - RGB
+ - devStateIcon
+ returns html code that can be used to create an icon that represents the device color in the room overview.
+
+
+
+ Attributes
+
+ - color-icon
+ 1 -> use lamp color as icon color and 100% shape as icon shape
+ 2 -> use lamp color scaled to full brightness as icon color and dim state as icon shape
+ - subType
+ colordimmer, dimmer or switch, default is initialized according to device model.
+ - delayedUpdate
+ 1 -> the update of the device status after a set command will be delayed for 1 second. usefull if multiple devices will ne switched.
+
+ - devStateIcon
+ will be initialized to {(HUEDevice_devStateIcon($name),"toggle")} to show device color as default in room overview.
+ - webCmd
+ will be initialized to rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:toggle:on:off to show colorpicker and 3 color preset buttons in room overview.
+
+
+
+
+
+
+Heating Control
+
+
+
+I2C_BMP180
+
+
+
+ With this module you can read values from the digital pressure sensors BMP180 and BMP085
+ via the i2c bus on Raspberry Pi.
+ There are two possibilities connecting to I2C bus:
+
+ - via RPII2C module
+ The I2C messages are send through an I2C interface module like RPII2C, FRM
+ or NetzerI2C so this device must be defined first.
+ attribute IODev must be set
+
+ - via HiPi library
+ Add these two lines to your /etc/modules file to load the I2C relevant kernel modules
+ automaticly during booting your Raspberry Pi.
+ i2c-bcm2708
+ i2c-dev
+ Install HiPi perl modules:
+ wget http://raspberry.znix.com/hipifiles/hipi-install
+ perl hipi-install
+ To change the permissions of the I2C device create file:
+ /etc/udev/rules.d/98_i2c.rules
+ with this content:
+ SUBSYSTEM=="i2c-dev", MODE="0666"
+ Reboot
+
+ To use the sensor on the second I2C bus at P5 connector
+ (only for version 2 of Raspberry Pi) you must add the bold
+ line of following code to your FHEM start script:
+ case "$1" in
+ 'start')
+ sudo hipi-i2c e 0 1
+ ...
+
+
+
+ Define
+
+ define BMP180 I2C_BMP180 [<I2C device>]
+ <I2C device> must not be used if you connect via RPII2C module. For HiPi it's mandatory.
+
+ Examples:
+
+ 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>
+
+ Reads the current temperature and pressure values from sensor.
+ Normaly this execute automaticly at each poll intervall. You can execute
+ this manually if you want query the current values.
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+ - oversampling_settings
+ Controls the oversampling setting of the pressure measurement in the sensor.
+ Default: 3, valid values: 0, 1, 2, 3
+
+ - poll_interval
+ Set the polling interval in minutes to query the sensor for new measured
+ values.
+ Default: 5, valid values: 1, 2, 5, 10, 20, 30
+
+ - roundTemperatureDecimal
+ Round temperature values to given decimal places.
+ Default: 1, valid values: 0, 1, 2
+
+ - roundPressureDecimal
+ Round temperature values to given decimal places.
+ Default: 1, valid values: 0, 1, 2
+
+ - altitude
+ if set, this altitude is used for calculating the pressure related to sea level (nautic null) NN
+ Note: this is a global attributes, e.g
+
+ attr global altitude 220
+
+
+
+
+
+
+
+I2C_DS1307
+
+ reads a DS1307 real-time clock chip via I2C.
+
+ Requires a defined I2C-device to work.
+
+
+ Define
+
+ define <name> I2C_DS1307 <i2c-address>
+ Specifies the I2C_DS1307 device.
+ - i2c-address is the (device-specific) address of the ic on the i2c-bus
+
+
+
+
+ Set
+
+ set <name> datetime ; set DS1307 time. Format is JJJJ-MM-DD HH:MM:SSdisplayed>
+ set <name> now
+
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+I2C_LCD
+
+ drives LiquidCrystal Displays (LCD) that are connected to Firmata (via I2C).
+ Supported are Displays that use a PCF8574T as I2C Bridge (as found on eBay when searching for
+ 'LCD' and 'I2C'). Tested is the 1602 type (16 characters, 2 Lines), the 2004 type (and other cheap chinise-made
+ I2C-LCDs for Arduino) ship with the same library, so they should work as well.
+ See http://arduino.cc/en/Tutorial/LiquidCrystal for details about
+ how to hook up the LCD to the arduino.
+
+ Requires a defined I2C-device to work.
+ this I2C-device has to be configures for i2c by setting attr 'i2c-config' on the I2C-device
+
+
+ Define
+
+ define <name> I2C_LCD <size-x> <size-y> <i2c-address>
+ Specifies the I2C_LCD device.
+ - size-x is the number of characters per line
+ - size-y is the numbers of rows.
+ - i2c-address is the (device-specific) address of the ic on the i2c-bus
+
+
+
+
+ Set
+
+ set <name> text <text to be displayed>
+ set <name> home
+ set <name> clear
+ set <name> display on|off
+ set <name> cursor <...>
+ set <name> scroll left|right
+ set <name> backlight on|off
+ set <name> reset
+ set <name> writeXY x-pos,y-pos,len[,l] <text to be displayed>
+
+
+
+ Get
+
+
+ Attributes
+
+ - backLight <on|off>
+ - autoClear <on|off>
+ - autoBreak <on|off>
+ - restoreOnStartup <on|off>
+ - restoreOnReconnect <on|off>
+ - IODev
+ Specify which I2C to use. (Optional, only required if there is more
+ than one I2C-device defined.)
+
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+I2C_PCA9532
+
+
+ Provides an interface to the PCA9532 I2C 16 channel PWM IC.
+ The PCA9532 has 2 independent PWM stages and every channel can be attached to on of these stages or directly turned on or off.
+ The I2C messages are send through an I2C interface module like RPII2C, FRM
+ or NetzerI2C so this device must be defined first.
+ attribute IODev must be set
+
+ Define
+
+ define <name> I2C_PCA9532 <I2C Address>
+ where <I2C Address> is an 2 digit hexadecimal value
+
+
+
+ Set
+
+ set <name> <port> <value>
+
+ - if
<port> is one of Port0 to Port15, then <value> will be one of:
+
+
+ off
+ on
+ PWM0 (output is switched with PWM0 frequency and duty cycle)
+ PWM1 (output is switched with PWM1 frequency and duty cycle)
+
+
+
+ -
+ if
<port> is PWM0 or PWM1, then <value> is an value between 0 and 255 and stands for the duty cycle of the PWM stage.
+
+
+
+ Examples:
+
+ set mod1 Port4 PWM1
+ set mod1 PWM1 128
+
+
+
+
+ Get
+
+ get <name>
+
+ refreshes all readings
+
+
+
+ Attributes
+
+ - poll_interval
+ Set the polling interval in minutes to query the GPIO's level
+ Default: -, valid values: decimal number
+
+ - InputPorts
+ Space separated list of Portnumers that are used as Inputs
+ Ports in this list can't be written
+ Default: no, valid values: 0 1 2 .. 15
+
+ - T0/T1
+ Sets PWM0/PWM1 to another Frequency. The Formula is: Fx = 152/(Tx + 1) The corresponding frequency value is shown under internals.
+ Default: 0 (152Hz), valid values: 0-255
+
+ - IODev
+ - ignore
+ - do_not_notify
+ - showtime
+
+
+
+
+
+I2C_PCF8574
+
+
+ Provides an interface to the PCA9532 8 channel port extender IC. On Raspberry Pi the Interrupt Pin can be connected to an GPIO and RPI_GPIO can be used to get the port values if an interrupt occurs.
+ The I2C messages are send through an I2C interface module like RPII2C, FRM
+ or NetzerI2C so this device must be defined first.
+ attribute IODev must be set
+
+ Define
+
+ define <name> I2C_PCF8574 <I2C Address>
+ where <I2C Address> is an 2 digit hexadecimal value
+
+
+
+ Set
+
+ set <name> <port> <value>
+
+ <port> is one of Port0 to Port7 and <value> is one of:
+
+
+
+
+ Example:
+
+
+
+
+ Get
+
+ get <name>
+
+ refreshes all readings
+
+
+
+ Attributes
+
+ - poll_interval
+ Set the polling interval in minutes to query the GPIO's level
+ Default: -, valid values: decimal number
+
+ - InputPorts
+ Space separated list of Portnumers that are used as Inputs
+ Ports in this list can't be written
+ Default: no, valid values: 0 1 2 .. 7
+
+ - IODev
+ - ignore
+ - do_not_notify
+ - showtime
+
+
+
+
+
+I2C_SHT21
+
+
+ Provides an interface to the SHT21 I2C Humidity sensor from Sensirion.
+ The I2C messages are send through an I2C interface module like RPII2C, FRM
+ or NetzerI2C so this device must be defined first.
+ attribute IODev must be set
+
+ Define
+
+ define <name> I2C_SHT21 [<I2C Address>]
+ where <I2C Address> is an 2 digit hexadecimal value
+
+
+ Set
+
+ set <name> readValues
+ Reads the current temperature and humidity values from sensor.
+
+
+ Attributes
+
+ - poll_interval
+ Set the polling interval in minutes to query data from sensor
+ Default: 5, valid values: 1,2,5,10,20,30
+
+ - roundHumidityDecimal
+ Number of decimal places for humidity value
+ Default: 1, valid values: 0 1 2
+
+ - roundTemperatureDecimal
+ Number of decimal places for temperature value
+ Default: 1, valid values: 0,1,2
+
+ - IODev
+ - do_not_notify
+ - showtime
+
+
+
+
+IF
+
+ IF (<condition>) (<FHEM commands1>) ELSE (<FHEM commands2>)
+
+ Executes <FHEM commands1> if <condition> is true, else <FHEM commands2> are executed.
+
+ IF can be used anywhere where FHEM commands can be used.
+
+ The ELSE-case is optional.
+
+ The <condition> is the same as in perl-if.
+
+ In addition, readings can be specified in the form:
+
+ [<device>:<reading>:<format>|[<regular expression>]]
+
+ In addition, internals can be specified with & in the form:
+
+ [<device>:&<internal>:<format>|[<regular expression>]]
+
+ <format> and [<regular expression>] are filter options und are optional.
+
+ possible <format>:
+
+ 'd' for decimal number
+
+ If only the state of a device is to be used, then only the device can be specified:
+
+ [<device>] corresponsed to [<device>:&STATE]
+
+ Examples:
+
+ IF in combination with at-module, Reading specified in the condition:
+
+ define check at +00:10 IF ([outdoor:humidity] > 70) (set switch1 off) ELSE (set switch1 on)
+
+ IF state query of the device "outdoor" in the condition:
+
+ define check at +00:10 IF ([outdoor] eq "open") (set switch1 on)
+
+ corresponds with details of the internal:
+
+ define check at +00:10 IF ([outdoor:&STATE] eq "open") (set switch1 on)
+
+ If the reading "state" to be queried, then the name of reading is specified without &:
+
+ define check at +00:10 IF ([outdoor:state] eq "open") (set switch1 on)
+
+ Nested IF commands (It can be entered in the DEF input on multiple lines with indentation for better representation):
+
+ define test notify lamp
+ IF ([lampe] eq "on") (
+
+ IF ([outdoor:humidity] < 70)
+ (set lamp off)
+ ELSE
+ (set lamp on)
+
+ ) ELSE
+ (set switch on)
+
+ Filter by numbers in Reading "temperature":
+
+ define settemp at 22:00 IF ([tempsens:temperature:d] >= 10) (set heating on)
+
+ Filter by "on" and "off" in the status of the device "move":
+
+ define activity notify move IF ([move:&STATE:[(on|off)] eq "on" and $we) (set lamp off)
+
+ Example of the use of Readings in the then-case:
+
+ define temp at 18:00 IF ([outdoor:temperature] > 10) (set lampe [dummy])
+
+ If an expression is to be evaluated first in a FHEM command, then it must be enclosed in braces.
+ For example, if at 18:00 clock the outside temperature is higher than 10 degrees, the desired temperature is increased by 1 degree:
+
+ define temp at 18:00 IF ([outdoor:temperature] > 10) (set thermostat desired-temp {[thermostat:desired-temp:d]+1})
+
+ Multiple commands are separated by a comma instead of a semicolon, thus eliminating the doubling, quadrupling, etc. of the semicolon:
+
+ define check at +00:10 IF ([outdoor:humidity] > 10) (set switch1 off,set switch2 on) ELSE (set switch1 on,set switch2 off)
+
+ If a comma in FHEM expression occurs, this must be additionally bracketed so that the comma is not recognized as a delimiter:
+
+ define check at +00:10 IF ([outdoor:humidity] > 10) ((set switch1,switch2 off))
+
+ IF in combination with a define at multiple set commands:
+
+ 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)
+
+ The comma can be combined as a separator between the FHEM commands with double semicolon, eg:
+
+ 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)
+
+ Time-dependent switch: In the period 20:00 to 22:00 clock the light should go off when it was on and I leave the room:
+
+ 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)
+
+ Combination of Perl and FHEM commands ($NAME and $EVENT can also be used):
+
+ define mail notify door:open IF ([alarm] eq "on")({system("wmail $NAME:$EVENT")},set alarm_signal on)
+
+
+
+IPCAM
+
+
+
+
+ Define
+
+ define <name> IPCAM <ip[:port]>
+
+
+ Defines a network camera device to trigger snapshots on events.
+
+
+ Network cameras (IP cameras) usually have a build-in function to create
+ snapshot images. This module enables the event- or time-controlled
+ recording of these images.
+
+ In addition, this module allows the recording of many image formats like
+ JPEG, PNG, GIF, TIFF, BMP, ICO, PPM, XPM, XBM and SVG. The only requirement
+ is that the recorded image must be accessible via a URL.
+
+ So it is also possible to record images of e.g. a public Weather Camera
+ from the internet or any picture of a website.
+
+ Furthermore, it is possible to control the camera via PTZ-mode or custom commands.
+
+
+ Examples:
+
+
+ A local ip-cam takes 5 snapshots with 10 seconds delay per call:
+
+
+ define ipcam IPCAM 192.168.1.205
+ attr ipcam delay 10
+ attr ipcam path snapshot.cgi?user=foo&pwd=bar
+ attr ipcam snapshots 5
+ attr ipcam storage /srv/share/surveillance/snapshots
+
+
+ A notify on a motion detection of a specified device:
+
+
+ define MOTION.not.01 notify GH.ga.SEC.MD.01:.*on.* get ipcam image
+
+
+ Send an eMail after snapshots are taken:
+
+
+ define MOTION.not.02 notify ipcam:.*snapshots.* { myEmailFunction("%NAME") }
+
+
+ A public web-cam takes only 1 snapshot per call:
+
+
+ define schloss IPCAM www2.braunschweig.de
+ attr schloss path webcam/schloss.jpg
+ attr schloss storage /srv/share/surveillance/snapshots
+
+
+ An at-Job takes every hour a snapshot:
+
+
+ define snapshot_schloss at +*00:01:00 get schloss image
+
+
+ Move the camera up:
+
+
+
+ Move the camera to a the predefined position 4:
+
+
+
+
+
+
+ Set
+
+ set <name> <value> <argument>
+
+
+ where value is one of:
+
+
+ cmd 1 .. 15
+ Sets the camera to a custom defined command. The command must be defined as an
+ attribute first.
+
+ You can define up to 15 custom commands. The given number always relates to an
+ equivalent attribute cmd<number> .
+
+ pan <direction> [steps]
+ Move the camera to the given <direction> , where <direction>
+ could be left or right .
+
+ The command always relates to an equivalent attribute cmdPan<direction> .
+
+ Furthermore, a step size can be specified, which relates to the equivalent attribute
+ cmdStep .
+
+ pos 1 .. 15|home
+ Sets the camera to a custom defined position in PTZ mode. The position must be
+ defined as an attribute first.
+
+ You can define up to 15 custom positions and a predefined home position. The given
+ number always relates to an equivalent attribute cmdPos<number> .
+
+ tilt <direction> [steps]
+ Move the camera to the given <direction> , where <direction>
+ could be up or down .
+
+ The command always relates to an equivalent attribute cmdPan<direction> .
+
+ Furthermore, a step size can be specified, which relates to the equivalent attribute
+ cmdStep .
+
+ raw <argument>
+ Sets the camera to a custom defined argument .
+
+
+
+
+
+
+ Get
+
+ get <name> <value>
+
+
+ where value is one of:
+
+
+ image
+ Get one or more images of the defined IP-Cam. The number of images
+ and the time interval between images can be specified using the
+ attributes snapshots and delay .
+
+ last
+ Show the name of the last snapshot.
+
+ snapshots
+ Show the total number of a image sequence.
+
+
+
+
+
+
+ Attributes
+
+
+
+
+ Generated events
+
+ - last: <name_of_device>_snapshot.<image_extension>
+ - snapshots: <total_number_of_taken_snapshots_at_end>
+
+
+
+
+
+
+IPWE
+
+
+
+
+ Define
+
+ define <name> IPWE <hostname> [<delay>]
+
+
+ Define a IPWE network attached weather data receiver device sold by ELV. Details see here.
+ It's intended to receive the same sensors as WS300 (8 T/H-Sensors and one kombi sensor),
+ but can be accessed via http and telnet.
+
+ For unknown reason, my try to use the telnet interface was not working neither with raw sockets
+ nor with Net::Telnet module. Therefore i choosed here the "easy" way
+ to simple readout the http page and extract all data from the offered table. For this reason this module doesnt
+ contain any option to configure this device.
+
Note: You should give your sensors a name within the web interface, once they a received the first time.
+ To extract a single sensor simply match for this name or sensor id
+
+
+ Attributes:
+
+ delay : seconds between read accesses(default 300s)
+
+
+
+ Example:
+
+ define ipwe IPWE ipwe1 120
+
+
+ attr ipwe delay 600 : 10min between readouts
+
+
+
+
+ Set
+
+
+ Get
+
+ get <name> status
+
+ Gets actual data from device for sensors with data
+
+ get <name> <sensorname>
+
+ will grep output from device for this sensorname
+
+
+
+
+
+ Attributes
+
+
+
+
+
+IT - InterTechno
+
+ The InterTechno 433MHZ protocol is used by a wide range of devices, which are either of
+ the sender/sensor category or the receiver/actuator category. As we right now are only
+ able to SEND InterTechno commands, but CAN'T receive them, this module at the moment
+ supports just devices like switches, dimmers, etc. through an CUL device, so this must be defined first.
+
+
+
+
+ Define
+
+ define <name> IT <housecode> <on-code> <off-code>
+ [<dimup-code>] [<dimdown-code>]
+ or
+ define <name> IT <ITRotarySwitches|FLS100RotarySwitches>
+
+
+ The value of housecode is a 10-digit InterTechno Code, consisting of 0/1/F as it is
+ defined as a tri-state protocol. These digits depend on your device you are using.
+
+ Bit 11/12 are used for switching/dimming. As different manufacturers are using
+ different bit-codes you can specifiy here the 2-digit code for off/on/dimup/dimdown
+ in the same form: 0/1/F.
+
+ The value of ITRotarySwitches consist of the value of the alpha switch A-P and
+ the numeric switch 1-16 as set on the intertechno device. E.g. A1 or G12.
+
+ The value of FLS100RotarySwitches consist of the value of the I,II,II,IV switch
+ and the numeric 1,2,3,4 swicht. E.g. I2 or IV4.
+
+ The value of ITRotarySwitches and FLS100RotarySwitches is internaly translated
+ into a houscode value.
+
+
+ <housecode> is a 10 digit tri-state number (0/1/F) depending on
+ your device setting (see list below).
+ <on-code> is a 2 digit tri-state number for switching your device on;
+ It is appended to the housecode to build the 12-digits IT-Message.
+ <off-code> is a 2 digit tri-state number for switching your device off;
+ It is appended to the housecode to build the 12-digits IT-Message.
+ - The optional
<dimup-code> is a 2 digit tri-state number for dimming your device up;
+ It is appended to the housecode to build the 12-digits IT-Message.
+ - The optional
<dimdown-code> is a 2 digit tri-state number for dimming your device down;
+ It is appended to the housecode to build the 12-digits IT-Message.
+
+
+
+ Examples:
+
+ define lamp IT 01FF010101 11 00 01 10
+ define roll1 IT 111111111F 11 00 01 10
+ define otherlamp IT 000000000F 11 10 00 00
+ define otherroll1 IT FFFFFFF00F 11 10
+ define itswitch1 IT A1
+ define lamp IT J10
+ define flsswitch1 IT IV1
+ define lamp IT II2
+
+
+
+
+
+ Set
+
+ set <name> <value> [<time>]
+
+ where value is one of:
+
+ dimdown
+ dimup
+ off
+ on
+ on-till # Special, see the note
+
+ Examples:
+
+ set lamp on
+ set lamp1,lamp2,lamp3 on
+ set lamp1-lamp3 on
+ set lamp off
+
+
+ Notes:
+
+ - on-till requires an absolute time in the "at" format (HH:MM:SS, HH:MM
+ or { <perl code> }, where the perl-code returns a time
+ specification).
+ If the current time is greater than the specified time, then the
+ command is ignored, else an "on" command is generated, and for the
+ given "till-time" an off command is scheduleld via the at command.
+
+
+
+
+
+ Get
+
+
+ Attributes
+
+
+ - IODev
+ Set the IO or physical device which should be used for sending signals
+ for this "logical" device. An example for the physical device is a CUL.
+ Note: Upon startup fhem DOES NOT assigns an InterTechno device an
+ IODevice! The attribute IODev needs to be used AT ANY TIME!
+
+
+ - eventMap
+ Replace event names and set arguments. The value of this attribute
+ consists of a list of space separated values, each value is a colon
+ separated pair. The first part specifies the "old" value, the second
+ the new/desired value. If the first character is slash(/) or komma(,)
+ then split not by space but by this character, enabling to embed spaces.
+ Examples:
+ attr store eventMap on:open off:closed
+ attr store eventMap /on-for-timer 10:open/off:closed/
+ set store open
+
+
+
+ - do_not_notify
+
+ - dummy
+ Set the device attribute dummy to define devices which should not
+ output any radio signals. Associated notifys will be executed if
+ the signal is received. Used e.g. to react to a code from a sender, but
+ it will not emit radio signal if triggered in the web frontend.
+
+
+ - loglevel
+
+ - showtime
+
+
+ - model
+ The model attribute denotes the model type of the device.
+ The attributes will (currently) not be used by the fhem.pl directly.
+ It can be used by e.g. external programs or web interfaces to
+ distinguish classes of devices and send the appropriate commands
+ (e.g. "on" or "off" to a switch, "dim..%" to dimmers etc.).
+ The spelling of the model names are as quoted on the printed
+ documentation which comes which each device. This name is used
+ without blanks in all lower-case letters. Valid characters should be
+ a-z 0-9 and - (dash),
+ other characters should be ommited. Here is a list of "official"
+ devices:
+ Sender/Sensor: itremote
+
+ Dimmer: itdimmer
+
+ Receiver/Actor: itswitch
+
+
+
+
+ - ignore
+ Ignore this device, e.g. if it belongs to your neighbour. The device
+ won't trigger any FileLogs/notifys, issued commands will silently
+ ignored (no RF signal will be sent out, just like for the dummy attribute). The device won't appear in the
+ list command (only if it is explicitely asked for it), nor will it
+ appear in commands which use some wildcard/attribute as name specifiers
+ (see devspec). You still get them with the
+ "ignored=1" special devspec.
+
+
+
+
+
+
+ Generated events:
+
+ From an IT device you can receive one of the following events.
+ - on
+ - off
+ - dimdown
+ - dimup
+ Which event is sent is device dependent and can sometimes configured on
+ the device.
+
+
+
+
+
+
+ITACH_RELAY
+
+ Note: this module needs the Net::Telnet module.
+
+
+ Define
+
+ define <name> ITACH_RELAY <ip-address> <port>
+
+ Defines an Global Cache iTach Relay device (Box with 3 relays) via its ip address.
+
+
+ Examples:
+
+ define motor1 ITACH_RELAY 192.168.8.200 1
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ off
+ on
+ toggle
+
+ Examples:
+
+
+ Notes:
+
+ - Toggle is special implemented. List name returns "on" or "off" even after a toggle command
+
+
+
+
+
+JSONMETER
+
+ This module reads data from a measurement unit (so called smart meters for electricity, gas or heat)
+
+ that provides OBIS compliant data in JSON format on a webserver or on the FHEM file system.
+
+ It assumes normally, that the structur of the JSON data do not change.
+
+
+
+
+ Define
+
+ define <name> JSONMETER <deviceType> [<ip address>] [poll-interval]
+
+ Example: define powermeter JSONMETER ITF 192.168.178.20 300
+
+ [poll-interval]
+
+ Default is 300 seconds. Smallest possible value is 10. With 0 it will only update on "manual" request.
+
+ <deviceType>
+
+ Used to define the path and port to extract the json file.
+
+ The attribute 'pathString' can be used to add login information to the URL path of predefined devices.
+
+
+ - ITF - FROETEC Simplex ME one tariff electrical meter (N-ENERGY) (ITF Fröschl)
+ - EFR - EFR Smart Grid Hub for electrical meter (EON, N-ENERGY and EnBW)
+
+ use the 'pathstring' attribute to specifiy your login information
+
+ attr pathString ?LogName=user&LogPSWD=password
+
+ - LS110 - YouLess LS110 network sensor (counter) for electro mechanical electricity meter
+ - url - use the URL defined via the attributes 'pathString' and 'port'
+ - file - use the file defined via the attribute 'pathString' (positioned in the FHEM file system)
+
+
+
+
+
+ Set
+
+ INTERVAL <polling interval>
+ Polling interval in seconds
+
+ statusRequest
+ Update device information
+
+ restartJsonAnalysis
+ Restarts the analysis of the json file for known readings (compliant to the OBIS standard).
+
+ This analysis happens normally only once if readings have been found.
+
+
+
+ Get
+
+ jsonFile
+
+ extracts and shows the json data
+
+ jsonAnalysis
+
+ extracts the json data and shows the result of the analysis
+
+
+
+
+ Attributes
+
+ alwaysAnalyse < 0 | 1 >
+
+ Repeats by each update the json analysis - use if structure of json data changes
+
+ Normally the once analysed structure is saved to reduce CPU load.
+
+ doStatistics < 0 | 1 >
+
+ Builds daily, monthly and yearly statistics for certain readings (average/min/max or cumulated values).
+
+ Logging and visualisation of the statistics should be done with readings of type 'statReadingNameLast'.
+
+ pathString <string>
+
+ - if deviceType = 'file': specifies the local file name and path
+ - if deviceType = 'url': specifies the url path
+ - other deviceType: can be used to add login information to the url path of predefined devices
+
+
+ port <number>
+
+ Specifies the IP port for the deviceType 'url' (default is 80)
+
+ - readingFnAttributes
+
+
+
+
+JeeLink
+
+ The JeeLink is a family of RF devices sold by jeelabs.com.
+
+ It is possible to attach more than one device in order to get better
+ reception, fhem will filter out duplicate messages.
+
+ This module provides the IODevice for the PCA301 modules that implements the PCA301 protocoll.
+ In the future other RF devices like the Energy Controll 3000, JeeLabs room nodes, fs20 or kaku devices will be supportet.
+
+ Note: this module may require the Device::SerialPort or Win32::SerialPort
+ module if you attach the device via USB and the OS sets strange default
+ parameters for serial devices.
+
+
+
+
+ Define
+
+ define <name> JeeLink <device>
+
+ USB-connected devices:
+ <device> specifies the serial port to communicate with the JeeLink.
+ The name of the serial-device depends on your distribution, under
+ linux the cdc_acm kernel module is responsible, and usually a
+ /dev/ttyACM0 device will be created. If your distribution does not have a
+ cdc_acm module, you can force usbserial to handle the JeeLink by the
+ following command:modprobe usbserial vendor=0x0403
+ product=0x6001 In this case the device is most probably
+ /dev/ttyUSB0.
+
+ You can also specify a baudrate if the device name contains the @
+ character, e.g.: /dev/ttyACM0@57600
+
+ If the baudrate is "directio" (e.g.: /dev/ttyACM0@directio), then the
+ perl module Device::SerialPort is not needed, and fhem opens the device
+ with simple file io. This might work if the operating system uses sane
+ defaults for the serial parameters, e.g. some Linux distributions and
+ OSX.
+
+
+
+
+
+
+
+ Set
+
+ - raw <datar>
+ send <data> as a raw message to the JeeLink to be transmitted over the RF link.
+
+ - LaCrossePairForSec <sec> [ignore_battery]
+ enable autocreate of new LaCrosse sensors for <sec> seconds. if ignore_battery is not given only sensors
+ sending the 'new battery' flag will be created.
+
+
+
+
+ Get
+
+
+
+ Attributes
+
+
+
+
+
+JsonList
+
+ Note: this command is deprecated, use jsonlist2 instead.
+
+ jsonlist [<devspec>|<typespec>|ROOMS]
+
+ Returns an JSON tree of all definitions, all notify settings and all at
+ entries if no parameter is given. Can also be called via HTTP by
+ http://fhemhost:8083/fhem?cmd=jsonlist&XHR=1
+
+ Example:
+ fhem> jsonlist
+ {
+ "ResultSet": "full",
+ "Results": [
+ {
+ "list": "Global",
+ "devices": [
+ {
+ "DEF": "",
+ "NAME": "global",
+ "NR": "1",
+ "STATE": "",
+ "TYPE": "Global",
+ "currentlogfile": "/var/log/fhem/fhem-2011-12.log",
+ "logfile": "/var/log/fhem/fhem-%Y-%m.log",
+ "ATTR": {
+ "configfile": "/etc/fhem/fhem.conf",
+ "logfile": "/var/log/fhem/fhem-%Y-%m.log",
+ "modpath": "/usr/share/fhem",
+ "pidfilename": "/var/run/fhem.pid",
+ "port": "7072 global",
+ "room": "Server",
+ "statefile": "/var/cache/fhem/fhem.save",
+ "verbose": "4",
+ "version": "=VERS= from =DATE= ($Id: 98_JsonList.pm 5177 2014-03-09 16:16:17Z rudolfkoenig $)"
+ },
+ "READINGS": []
+ }
+ ]
+ },
+ {
+ "list": "CM11",
+ "devices": [
+ {
+ "DEF": "/dev/cm11",
+ "DeviceName": "/dev/cm11",
+ "FD": "14",
+ "NAME": "CM11",
+ "NR": "19",
+ "PARTIAL": "null",
+ "STATE": "Initialized",
+ "TYPE": "CM11",
+ "ATTR": {
+ "model": "CM11"
+ },
+ "READINGS": []
+ }
+ ]
+ },
+ {
+ [...placeholder for more entrys...]
+ },
+ ],
+ "totalResultsReturned": 235
+ }
+
+ If specifying <devspec> , then a detailed status for
+ <devspec> will be displayed, e.g.:
+ fhem> jsonlist lamp1
+ {
+ "ResultSet": {
+ "Results": {
+ "ATTRIBUTES": {
+ "alias": "Lamp on Sideboard",
+ "model": "fs20st",
+ "room": "Livingroom"
+ },
+ "BTN": "01",
+ "CHANGED": "ARRAY",
+ "CHANGETIME": "ARRAY",
+ "CODE": {
+ "1": "0b0b 01",
+ "2": "0b0b 0f",
+ "3": "0b0b f0",
+ "4": "0b0b ff"
+ },
+ "DEF": "12341234 1112 lm 1144 fg 4411 gm 4444",
+ "IODev": "CUN868",
+ "NAME": "lamp1",
+ "NR": "155",
+ "READINGS": {
+ "state": {
+ "TIME": "2011-12-01 16:23:01",
+ "VAL": "on"
+ }
+ },
+ "STATE": "on",
+ "TYPE": "FS20",
+ "XMIT": "0b0b"
+ }
+ }
+ }
+
+ If specifying <typespec> , then a list with the status for
+ the defined <typespec> devices will be displayed, e.g.:
+ fhem> jsonlist HMS
+ {
+ "ResultSet": "devices#HMS",
+ "Results": [
+ {
+ "name": "KG.ga.WD.01",
+ "state": "Water Detect: off"
+ },
+ {
+ "name": "KG.hz.GD.01",
+ "state": "Gas Detect: off"
+ },
+ {
+ "name": "KG.k1.TF.01",
+ "state": "T: 16.6 H: 51.2 Bat: ok"
+ },
+ {
+ "name": "NN.xx.RM.xx",
+ "state": "smoke_detect: off"
+ }
+ ],
+ "totalResultsReturned": 4
+ }
+
+ If specifying ROOMS , then a list with the defined rooms
+ will be displayed, e.g.:
+ fhem> jsonlist ROOMS
+ {
+ "ResultSet": "rooms",
+ "Results": [
+ "Bathroom",
+ "Bedroom",
+ "Children",
+ "Diningroom",
+ "Garden",
+ "House",
+ "Livingroom",
+ "Office",
+ "hidden"
+ ],
+ "totalResultsReturned": 15
+ }
+
+
+
+
+JsonList2
+
+ jsonlist [<devspec>]
+
+ This is a command, to be issued on the command line (FHEMWEB or telnet
+ interface). Can also be called via HTTP by
+
+ http://fhemhost:8083/fhem?cmd=jsonlist2&XHR=1
+
+ Returns an JSON tree of the internal values, readings and attributes of the
+ requested definitions.
+ Note: the old command jsonlist (without the 2 as suffix) is deprecated
+ and will be removed in the future
+
+
+
+KM271
+
+ KM271 is the name of the communication device for the Buderus Logamatic 2105
+ or 2107 heating controller. It is connected via a serial line to the fhem
+ computer. The fhem module sets the communication device into log-mode, which
+ then will generate an event on change of the inner parameters. There are
+ about 20.000 events a day, the FHEM module ignores about 90% of them, if the
+ all_km271_events attribute is not set.
+
+
+ Note: this module requires the Device::SerialPort or Win32::SerialPort module.
+
+
+
+ Define
+
+ define <name> KM271 <serial-device-name>
+
+ Example:
+
+ define KM271 KM271 /dev/ttyS0@2400
+
+
+
+
+
+ Set
+
+ set KM271 <param> [<value> [<values>]]
+ where param is one of:
+
+ - hk1_tagsoll <temp>
+ sets the by day temperature for heating circuit 1
+ 0.5 celsius resolution - temperature between 10 and 30 celsius
+ - hk2_tagsoll <temp>
+ sets the by day temperature for heating circuit 2
+ (see above)
+ - hk1_nachtsoll <temp>
+ sets the by night temperature for heating circuit 1
+ (see above)
+ - hk2_nachtsoll <temp>
+ sets the by night temperature for heating circuit 2
+ (see above)
+ - hk1_betriebsart [automatik|nacht|tag]
+ sets the working mode for heating circuit 1
+
+ - automatik: the timer program is active and the summer configuration is in effect
+ - nacht: manual by night working mode, no timer program is in effect
+ - tag: manual by day working mode, no timer program is in effect
+
+ - hk2_betriebsart [automatik|nacht|tag]
+ sets the working mode for heating circuit 2
+ (see above)
+ - ww_soll <temp>
+ sets the hot water temperature
+ 1.0 celsius resolution - temperature between 30 and 60 celsius
+ - ww_betriebsart [automatik|nacht|tag]
+ sets the working mode for hot water
+
+ - automatik: hot water production according to the working modes of both heating circuits
+ - nacht: no hot water at all
+ - tag: manual permanent hot water
+
+ - ww_on-for-timer [period]
+ start hot water production for the given period
+ period must have the format HH:MM
+ ww_betriebsart is set according to the attribut ww_timermode. For switching-off hot water a single one-time at command is automatically generated which will set ww_betriebsart back to nacht
+ - hk1_programm [eigen|familie|frueh|spaet|vormittag|nachmittag|mittag|single|senior]
+ sets the timer program for heating circuit 1
+
+ - eigen: the custom program defined by the user (see below) is used
+ - all others: predefined programs from Buderus for various situations (see Buderus manual for details)
+
+ - hk2_programm [eigen|familie|frueh|spaet|vormittag|nachmittag|mittag|single|senior]
+ sets the timer program for heating circuit 2
+ (see above)
+ - hk1_timer [<position> delete|<position> <on-day> <on-time> <off-day> <off-time>]
+ sets (or deactivates) a by day working mode time interval for the custom program of heating circuit 1
+
+ - position: addresses a slot of the custom timer program and must be between 1 and 21
+ The slot will be set to the interval specified by the following on- and off-timepoints or is deactivated when the next argument is delete.
+ - on-day: first part of the on-timepoint
+ valid arguments are [mo|di|mi|do|fr|sa|so]
+ - on-time: second part of the on-timepoint
+ valid arguments have the format HH:MM (supported resolution: 10 min)
+ - off-day: first part of the off-timepoint
+ (see above)
+ - off-time: second part of the off-timepoint
+ valid arguments have the format HH:MM (supported resolution: 10 min)
+
+ As the on-timepoint is reached, the heating circuit is switched to by day working mode and when the off-timepoint is attained, the circuit falls back to by night working mode.
+ A program can be build up by chaining up to 21 of these intervals. They are ordered by the position argument. There's no behind the scene magic that will automatically consolidate the list.
+ The consistency of the program is in the responsibility of the user.
+
+ Example:
+
+ set KM271 hk1_timer 1 mo 06:30 mo 08:20
+
+ This will toogle the by day working mode every Monday at 6:30 and will fall back to by night working mode at 8:20 the same day.
+ - hk2_timer [<position> delete|<position> <on-day> <on-time> <off-day> <off-time>]
+ sets (or deactivates) a by day working mode time interval for the custom program of heating circuit 2
+ (see above)
+ - logmode
set to logmode / request all readings again
+
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+ - do_not_notify
+ - loglevel
+
+ - all_km271_events
+ If this attribute is set to 1, do not ignore following events:
+ HK1_Vorlaufisttemperatur, HK2_Vorlaufisttemperatur, Kessel_Vorlaufisttemperatur,
+ Kessel_Integral, Kessel_Integral1
+ These events account for ca. 92% of all events.
+ All UNKNOWN events are ignored too, most of them were only seen
+ directly after setting the device into logmode.
+
+
+ - ww_timermode [automatik|tag]
+ Defines the working mode for the ww_on-for-timer command (default is tag).
+ ww_on-for-timer will set the ww_betriebsart of the heater according to this attribute.
+
+
+
+
+
+
+
+ Generated events:
+
+ - Abgastemperatur
+ - Aussentemperatur
+ - Aussentemperatur_gedaempft
+ - Brenner_Ansteuerung
+ - Brenner_Ausschalttemperatur
+ - Brenner_Einschalttemperatur
+ - Brenner_Laufzeit1_Minuten2
+ - Brenner_Laufzeit1_Minuten1
+ - Brenner_Laufzeit1_Minuten
+ - Brenner_Laufzeit2_Minuten2
+ - Brenner_Laufzeit2_Minuten1
+ - Brenner_Laufzeit2_Minuten
+ - Brenner_Mod_Stellglied
+ - ERR_Fehlerspeicher1
+ - ERR_Fehlerspeicher2
+ - ERR_Fehlerspeicher3
+ - ERR_Fehlerspeicher4
+ - ERR_Letzter_Fehlerstatus
+ - HK1_Ausschaltoptimierung
+ - HK1_Betriebswerte1
+ - HK1_Betriebswerte2
+ - HK1_Einschaltoptimierung
+ - HK1_Heizkennlinie_+10_Grad
+ - HK1_Heizkennlinie_-10_Grad
+ - HK1_Heizkennlinie_0_Grad
+ - HK1_Mischerstellung
+ - HK1_Pumpe
+ - HK1_Raumisttemperatur
+ - HK1_Raumsolltemperatur
+ - HK1_Vorlaufisttemperatur
+ - HK1_Vorlaufsolltemperatur
+ - HK2_Ausschaltoptimierung
+ - HK2_Betriebswerte1
+ - HK2_Betriebswerte2
+ - HK2_Einschaltoptimierung
+ - HK2_Heizkennlinie_+10_Grad
+ - HK2_Heizkennlinie_-10_Grad
+ - HK2_Heizkennlinie_0_Grad
+ - HK2_Mischerstellung
+ - HK2_Pumpe
+ - HK2_Raumisttemperatur
+ - HK2_Raumsolltemperatur
+ - HK2_Vorlaufisttemperatur
+ - HK2_Vorlaufsolltemperatur
+ - Kessel_Betrieb
+ - Kessel_Fehler
+ - Kessel_Integral
+ - Kessel_Integral1
+ - Kessel_Vorlaufisttemperatur
+ - Kessel_Vorlaufsolltemperatur
+ - Modulkennung
+ - NoData
+ - Versionsnummer_NK
+ - Versionsnummer_VK
+ - WW_Betriebswerte1
+ - WW_Betriebswerte2
+ - WW_Einschaltoptimierung
+ - WW_Isttemperatur
+ - WW_Pumpentyp
+ - WW_Solltemperatur
+
+
+ As I cannot explain all the values, I logged data for a period and plotted
+ each received value in the following logs:
+
+ All of these events are reported directly after initialization (or after
+ requesting logmode), along with some 60 configuration records (6byte long
+ each). Most parameters from these records are reverse engeneered, they
+ all start with CFG_ for configuration and PRG_ for timer program information.
+
+
+
+
+
+KS300
+
+ Fhem can receive the KS300 radio (868.35 MHz) messages through FHZ, WS300 or an CUL
+ device, so one of them must be defined first.
+ This module services messages received by the FHZ device, if you use one of
+ the other alternetives, see the WS300 or CUL_WS entries.
+ Note: The KS555 is also reported to work.
+
+
+
+ Define
+
+ define <name> KS300 <housecode> [ml/raincounter [wind-factor]]
+
+
+ <housecode> is a four digit hex number,
+ corresponding to the address of the KS300 device, right now it is ignored.
+ The ml/raincounter defaults to 255 ml, but it must be specified if you wish
+ to set the wind factor, which defaults to 1.0.
+
+
+ Examples:
+
+ define ks1 KS300 1234
+
+
+
+
+
+ Set
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+ - ignore
+ - IODev
+ - eventMap
+ - do_not_notify
+ - showtime
+ - model (ks300)
+ - rainadjustment
+ If this attribute is set, fhem automatically accounts for rain counter
+ resets after a battery change and random counter switches as experienced
+ by some users. The raw rain counter values are adjusted by an offset
+ in order to flatten out the sudden large increases and decreases in
+ the received rain counter values. Default is off.
+
+
+
+
+
+
+LGTV
+
+
+
+ Define
+
+ define <name> LGTV
+
+
+ This module is expected to work with xxLG7000 as it's
+ IODev. With LGTV and a compatible hardware module (currently, there's only
+ xxLG7000), you are able to power your TV set on and off, query it's power state,
+ select the input (AV, RGB, Composites, analogue TV, DVB-T, HDMI) or mute/unmute
+ the volume.
+ Defining a LGTV device will schedule an internal task, which periodically reads
+ the status of the TV set (power state; if power is on, query the selected input)
+ and triggers notify/filelog commands.
+
+ Example:
+
+ define 47LG7000 LGTV
+ attr 47LG7000 IODev myLG7k
+
+
+
+
+
+ Set
+
+ set <name> <what> <value>
+
+ Currently, the following commands are defined; not all may be available on a
+ given TV set. An error messages should be recorded if e. g. the input in question
+ is not usable.
+
+ power on
+power off
+input AV1
+input AV2
+input AV3
+input AV3
+input Component
+input RGB
+input HDMI1
+input HDMI2
+input HDMI3
+input HDMI4
+input DVBT
+input PAL
+audio mute
+audio normal
+
+
+
+ Get
+
+ get <name> <what>
+
+ Currently, the following commands are defined; not all may be available on a
+ given TV set. An error messages should be recorded if e. g. the input in question
+ is not usable.
+ power
+input
+audio
+
+
+
+ Attributes
+
+
+ Implementator's note
+
+ The commands listed above are send 1:1 to the underlying IODev (e. g. xxLG7000); that IODev
+ is responsible for translation into whatever means to invoke the function on the TV.
+ It is my hope that other's will adopt this idea and write compatible low level drivers for other
+ TV sets, to make this module (even ;)) more useful.
+
+
+
+
+
+LINDY_HDMI_SWITCH
+
+ Note: this module needs the Net::Telnet module.
+
+
+ Define
+
+ define <name> LINDY_HDMI_SWITCH <ip-address> <port>
+
+ Defines an Lindy 4:2 HDMI Switch serial connected to a transparent ethernet to serial adapter via the ip address of the adapter. Lindy partnumber: 38054
+
+ Examples:
+
+ define livingroom.hdmi LINDY_HDMI_SWITCH 192.168.1.64 4999
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ 11
+ 12
+ 13
+ 14
+ 21
+ 22
+ 23
+ 24
+
+ First digit is the output port, second digit is the input port.
+ Example:
+
+ set livingroom.hdmi 12
+
+
+
+
+
+
+LIRC
+
+ Generate FHEM-events when an LIRC device receives infrared signals.
+
+ Note: this module needs the Lirc::Client perl module.
+
+
+
+ Define
+
+ define <name> LIRC <lircrc_file>
+ Example:
+
+ define Lirc LIRC /etc/lirc/lircrc
+
+ Note: In the lirc configuration file you have to define each possible event.
+ If you have this configuration
+
+ begin
+ prog = fhem
+ button = pwr
+ config = IrPower
+ end
+ and you press the pwr button the IrPower toggle event occures at fhem.
+
+ define IrPower01 notify Lirc:IrPower set lamp toggle
+ turns the lamp on and off.
+ If you want a faster reaction to keypresses you have to change the
+ defaultvalue of readytimeout from 5 seconds to e.g. 1 second in fhem.pl
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+LISTENLIVE
+
+
+
+ Define
+
+ define <name> LISTENLIVE <ip-address>[:<port>] [<status_interval>]
+
+
+ This module can control all mediaplayers runnng ListenLive Firmware laufen via a network connection.
+ It can control power state on/off, volume up/down/mute and can send all remomte-control commands.
+
+ The port value is optional. If not defined, standard port 8080 will be used.
+
+ The status_interval value is optional. If not defined, standard interval 60sec will be used.
+
+ Upon the definition of a new LISTENLIVE-device an internal Loop will be defined which will check and update the device readings
+ all seconds to trigger all notify and FileLog entities.
+
+
+ Example:
+
+
+ define llradio LISTENLIVE 192.168.0.10
+
+ define llradio LISTENLIVE 192.168.0.10:8085 120 # with port (8085) und status interval (120 seconds)
+
+
+
+
+ Set-Commands
+
+ set <name> <commandGroup> [<command>] [<parameter>]
+
+ Commands are grouped into commandGroups depending on their functional tasks.
+ The following groups and commands are currently available:
+
+
+commandGroup power
+power on
+power off
+
+commandGroup audio
+audio mute
+audio unmute
+audio volm
+audio volp
+
+commandGroup cursor
+cursor up
+cursor down
+cursor left
+cursor right
+cursor home
+cursor exit
+cursor enter
+
+commandGroup message
+message [<textMessage>]
+
+commandGroup reset
+reset power
+reset mute
+reset menupos
+
+commandGroup raw
+raw
+
+commandGroup user (experimental)
+user
+
+commandGroup help
+help
+
+commandGroup statusRequest
+statusRequest
+
+
+
+
+ Get-Commands
+
+ get <name> <parameter>
+
+ The following parameters are available:
+
+ help - show help-text
+
+
+
+
+
+ Attributes
+
+
+ Generated Readings/Events:
+
+ - listinfo - current selection list on device and position in it
+ - metainfo1-5 - metainfo for currently playing stream
+ - mi_info - current menu state
+ - mi_app, mi_mp, mi_ms, mi_state - readings splitted from mi_info, mi_app is derived from numerical mi_state
+ - mute - current mute state ("on" => muted, "off" => unmuted)
+ - power - current power state
+ - state - current device state (online or offline)
+ - volume - current volume level
+
+
+ Author's notes
+
+ You need to activate option "remote control settings" -> "network remote control [on]" in your device's settings.
+
+ Upon the device definion a corresponding PRESENCE-entity will be created to evaluate the device availability.
+
+
+
+
+
+LUXTRONIK2
+
+ Luxtronik 2.0 is a heating controller used in Alpha Innotec, Siemens Novelan (WPR NET) and Wolf Heiztechnik (BWL/BWS) heat pumps.
+
+ It has a built-in ethernet port, so it can be directly integrated into a local area network (LAN).
+
+ The modul is reported to work with firmware: V1.54C, V1.60, V1.69.
+
+ More Info on the particular page of FHEM-Wiki (in German).
+
+
+
+
+
+ Define
+
+ define <name> LUXTRONIK2 <IP-address> [poll-interval]
+ If the pool interval is omitted, it is set to 300 (seconds). Smallest possible value is 30.
+
+ Example: define Heizung LUXTRONIK2 192.168.0.12 600
+
+
+
+
+ Set
+ A firmware check assures before each set operation that a heat pump with untested firmware is not damaged accidently.
+ opModeHotWater <Mode>
+ Operating Mode of domestic hot water boiler (Auto | Party | Off)
+
+ hotWaterTemperatureTarget <temperature>
+ Target temperature of domestic hot water boiler in °C
+
+ INTERVAL <polling interval>
+ Polling interval in seconds
+
+ statusRequest
+ Update device information
+
+ synchClockHeatPump
+ Synchronizes controller clock with FHEM time. !! This change is lost in case of controller power off!!
+
+
+
+
+ Get
+
+ No get implemented yet ...
+
+
+
+
+ Attributes
+
+ statusHTML
+
+ If set, a HTML-formatted reading named "floorplanHTML" is created. It can be used with the FLOORPLAN module.
+
+ Currently, if the value of this attribute is not NULL, the corresponding reading consists of the current status of the heat pump and the temperature of the water.
+
+ doStatistics < 0 | 1 >
+
+ Calculates statistic values: statBoilerGradientHeatUp, statBoilerGradientCoolDown, statBoilerGradientCoolDownMin (boiler heat loss)
+
+ Builds daily, monthly and yearly statistics for certain readings (average/min/max or cumulated values).
+
+ Logging and visualisation of the statistic should be done with readings of type 'statReadingNameLast'.
+
+ allowSetParameter < 0 | 1 >
+
+ The parameters of the heat pump controller can only be changed if this attribut is set to 1.
+
+ autoSynchClock <delay>
+
+ Corrects the clock of the heatpump automatically if a certain delay (10 s - 600 s) against the FHEM time is exeeded. Does a firmware check before.
+
+ (A 'delayDeviceTimeCalc' <= 2 s can be caused by the internal calculation interval of the heat pump controller.)
+
+ ignoreFirmwareCheck < 0 | 1 >
+
+ A firmware check assures before each set operation that a heatpump controller with untested firmware is not damaged accidently.
+
+ If this attribute is set to 1, the firmware check is ignored and new firmware can be tested for compatibility.
+
+ - readingFnAttributes
+
+
+
+
+LaCrosse
+
+
+
+ FHEM module for LaCrosse Temperature and Humidity sensors.
+
+ It can be integrated in to FHEM via a JeeLink as the IODevice.
+
+ The JeeNode sketch required for this module can be found in .../contrib/36_LaCrosse-pcaSerial.zip.
+
+
+ Define
+
+ define <name> LaCrosse <addr>
+
+ addr is a 2 digit hex number to identify the LaCrosse device.
+ Note: devices are autocreated only if LaCrossePairForSec is active for the JeeLink IODevice device.
+
+
+
+
+ Set
+
+ - replaceBatteryForSec <sec> [ignore_battery]
+ sets the device for <sec> seconds into replace battery mode. the first unknown address that is
+ received will replace the current device address. this can be partly automated with a readings group configured
+ to show the battery state of all LaCrosse devices and a link/command to set replaceBatteryForSec on klick.
+
+
+
+
+ Get
+
+
+
+ Readings
+
+ - battery[]
+ ok or low
+ - temperature[]
+ Notice: see the filterThreshold attribute.
+ - humidity
+
+
+
+ Attributes
+
+ - doAverage
+ use an average of the last 4 values for temperature and humidity readings
+ - doDewpoint
+ calculate dewpoint
+ - filterThreshold
+ if the difference between the current and previous temperature is greater than filterThreshold degrees
+ the readings for this channel are not updated. the default is 10.
+ - resolution
+ the resolution in 1/10 degree for the temperature reading
+ - ignore
+ 1 -> ignore this device.
+
+
+
+
+LightScene
+
+ Allows to store the state of a group of lights and other devices and recall it later.
+ Multiple states for one group can be stored.
+
+
+
+ Define
+
+ define <name> LightScene [<dev1>] [<dev2>] [<dev3>] ...
+
+
+ Examples:
+
+ define light_group LightScene Lampe1 Lampe2 Dimmer1
+ define kino_group LightScene LampeDecke LampeFernseher Fernseher Verstaerker
+ define Wohnzimmer LightScene Leinwand Beamer TV Leselampe Deckenlampe
+
+
+
+ The device detail view will show an html overview of the current state of all included devices and all
+ configured scenes with the device states for each. The column heading with the device names is clickable
+ to go to detail view of this device. The first row that displays the current device state is clickable
+ and should react like a click on the device icon in a room overview would. this can be used to interactively
+ configure a new scene and save it with the command menu of the detail view. The first column of the table with
+ the scene names ic clickable to activate the scene.
+
+ A weblink with a scene overview that can be included in any room or a floorplan can be created with:
+ define wlScene weblink htmlCode {LightScene_2html("LightSceneName")}
+
+
+ Set
+
+ - save <scene_name>
+ save current state for alle devices in this LightScene to <scene_name>
+ - scene <scene_name>
+ shows scene <scene_name> - all devices are switched to the previously saved state
+ - set <scene_name> <device> [<cmd>]
+ set the saved state of <device> in <scene_name> to <cmd>
+ - setcmd <scene_name> <device> [<cmd>]
+ set command to be executed for <device> in <scene_name> to <cmd>.
+ <cmd> can be any commandline that fhem understands including multiple commands separated by ;;
+
+ - set kino_group setcmd allOff LampeDecke sleep 30 ;; set LampeDecke off
+ - set light_group setcmd test Lampe1 sleep 10 ;; set Lampe1 on ;; sleep 5 ;; set Lampe1 off
+
+ - remove <scene_name>
+ remove <scene_name> from list of saved scenes
+
+
+
+ Get
+
+ - scenes
+ - scene <scene_name>
+
+
+
+ Attributes
+
+ - lightSceneParamsToSave
+ this attribute can be set on the devices to be included in a scene. it is set to a comma separated list of readings
+ that will be saved. multiple readings separated by : are collated in to a single set command (this has to be supported
+ by the device). each reading can have a perl expression appended with '@' that will be used to alter the $value used for
+ the set command. this can for example be used to strip a trailing % from a dimmer state. this perl expression must not contain
+ spaces,colons or commas.
+ in addition to reading names the list can also contain expressions of the form abc -> xyz
+ or get cba -> set uvw to map reading abc to set xyz or get cba to set uvw. the list can be given as a
+ string or as a perl expression enclosed in {} that returns this string.
+ attr myReceiver lightSceneParamsToSave volume,channel
+ attr myHueDevice lightSceneParamsToSave {(Value($DEVICE) eq "off")?"state":"bri : xy"}
+ attr myDimmer lightSceneParamsToSave state@{if($value=~m/(\d+)/){$1}else{$value}}
+ - lightSceneRestoreOnlyIfChanged
+ this attribute can be set on the lightscene and/or on the individual devices included in a scene.
+ the device settings have precedence over the scene setting.
+ 1 -> for each device do nothing if current device state is the same as the saved state
+ 0 -> always set the state even if the current state is the same as the saved state. this is the default
+ - switchingOrder
+ space separated list of <scene>:<deviceList> items that will give a per scene order
+ in which the devices should be switched.
+ the devices from <deviceList> will come before all other devices of this LightScene;
+ if the first character of the <deviceList> ist a ! the devices from the list will come after
+ all other devices from this lightScene.
+ <scene> and each element of <deviceList> are treated as a regex.
+ Example: To switch a master power outlet before every other device at power on and after every device on power off:
+ define media LightScene TV,DVD,Amplifier,masterPower
+ attr media switchingOrder .*On:masterPower,.* allOff:!.*,masterPower
+
+
+
+
+
+M232
+
+
+
+
+ Define
+
+ define <name> M232 <m232-device>
+
+
+ Define a M232 device. You can attach as many M232 devices as you like. A
+ M232 device provides 6 analog inputs (voltage 0..5V with 10 bit resolution)
+ and 8 bidirectional digital ports. The eighth digital port can be used as a
+ 16 bit counter (maximum frequency 3kHz). The M232 device needs to be
+ connected to a 25pin sub-d RS232 serial port. A USB-to-serial converter
+ works fine if no serial port is available.
+
+ Examples:
+
+ define m232 M232 /dev/ttyUSB2
+
+
+
+
+
+ Set
+
+ set <name> stop
+
+ Stops the counter.
+
+ set <name> start
+
+ Resets the counter to zero and starts it.
+
+ set <name> octet
+
+ Sets the state of all digital ports at once, value is 0..255.
+
+ set <name> io0..io7 0|1
+
+ Turns digital port 0..7 off or on.
+
+
+
+
+
+ Get
+
+ get <name> [an0..an5]
+
+ Gets the reading of analog input 0..5 in volts.
+
+ get <name> [io0..io7]
+
+ Gets the state of digital ports 0..7, result is 0 or 1.
+
+ get <name> octet
+
+ Gets the state of all digital ports at once, result is 0..255.
+
+ get <name> counter
+
+ Gets the number of ticks of the counter since the last reset. The counter
+ wraps around from 65,535 to 0 and then stops.
+ See M232Counter for how we care about this.
+
+
+
+
+
+ Attributes
+
+
+
+
+
+
+
+M232Counter
+
+
+
+ Define
+
+ define <name> M232Counter [unit [factor [deltaunit [deltafactor]]]]
+
+
+ Define at most one M232Counter for a M232 device. Defining a M232Counter
+ will schedule an internal task, which periodically reads the status of the
+ counter, and triggers notify/filelog commands. unit is the unit
+ name, factor is used to calculate the reading of the counter
+ from the number of ticks. deltaunit is the unit name of the counter
+ differential per second, deltafactor is used to calculate the
+ counter differential per second from the number of ticks per second.
+ Default values:
+
+ - unit: ticks
+ - factor: 1.0
+ - deltaunit: ticks per second
+ - deltafactor: 1.0
+
+ Note: the parameters in square brackets are optional. If you wish to
+ specify an optional parameter, all preceding parameters must be specified
+ as well.
+
Examples:
+
+ define counter M232Counter turns
+ define counter M232Counter kWh 0.0008 kW 2.88
+ (one tick equals 1/1250th kWh)
+
+
+ Do not forget to start the counter (with set .. start for
+ M232) or to start the counter and set the reading to a specified value
+ (with set ... value for M232Counter).
+ To avoid issues with the tick count reaching the end point, the device's
+ internal counter is automatically reset to 0 when the tick count is 64,000
+ or above and the reading basis is adjusted accordingly.
+
+
+
+
+ Set
+
+ set <name> value <value>
+
+ Sets the reading of the counter to the given value. The counter is reset
+ and started and the offset is adjusted to value/unit.
+
+ set <name> interval <interval>
+
+ Sets the status polling interval in seconds to the given value. The default
+ is 60 seconds.
+
+
+
+
+
+ Get
+
+ get <name> status
+
+ Gets the reading of the counter multiplied by the factor from the
+ define statement. Wraparounds of the counter are accounted for
+ by an offset (see reading basis in the output of the
+ list statement for the device).
+
+
+
+
+ Attributes
+
+
+
+
+
+
+M232Voltage
+
+
+
+
+ Define
+
+ define <name> M232Voltage [an0..an5] [unit [factor]]
+
+
+ Define as many M232Voltages as you like for a M232 device. Defining a
+ M232Voltage will schedule an internal task, which reads the status of the
+ analog input every minute, and triggers notify/filelog commands.
+ unit is the unit name, factor is used to
+ calibrate the reading of the analog input.
+
+ Note: the unit defaults to the string "volts", but it must be specified
+ if you wish to set the factor, which defaults to 1.0.
+
+ Example:
+
+ define volt M232Voltage an0
+ define brightness M232Voltage an5 lx 200.0
+
+
+
+
+ Set
+
+
+ Get
+
+
+
+ Attributes
+
+
+
+
+
+
+MAX
+
+ Devices from the eQ-3 MAX! group.
+ When heating thermostats show a temperature of zero degrees, they didn't yet send any data to the cube. You can
+ force the device to send data to the cube by physically setting a temperature directly at the device (not through fhem).
+
+
+ Define
+
+ define <name> MAX <type> <addr>
+
+
+ Define an MAX device of type <type> and rf address <addr>.
+ The <type> is one of HeatingThermostat, HeatingThermostatPlus, WallMountedThermostat, ShutterContact, PushButton.
+ The <addr> is a 6 digit hex number.
+ You should never need to specify this by yourself, the autocreate module will do it for you.
+ It's advisable to set event-on-change-reading, like
+ attr MAX_123456 event-on-change-reading .*
+ because the polling mechanism will otherwise create events every 10 seconds.
+
+ Example:
+
+ define switch1 MAX PushButton ffc545
+
+
+
+
+
+ Set
+
+ - desiredTemperature <value> [until <date>]
+ For devices of type HeatingThermostat only. <value> maybe one of
+
+ - degree celcius between 3.5 and 30.5 in 0.5 degree steps
+ - "on" or "off" set the thermostat to full or no heating, respectively
+ - "eco" or "comfort" using the eco/comfort temperature set on the device (just as the right-most physical button on the device itself does)
+ - "auto <temperature>". The weekly program saved on the thermostat is processed. If the optional <temperature> is given, it is set as desiredTemperature until the next switch point of the weekly program.
+ - "boost", activates the boost mode, where for boostDuration minutes the valve is opened up boostValveposition percent.
+
+ All values but "auto" maybe accompanied by the "until" clause, with <data> in format "dd.mm.yyyy HH:MM" (minutes may only be "30" or "00"!)
+ to set a temporary temperature until that date/time. Make sure that the cube/device has a correct system time.
+ - groupid <id>
+ For devices of type HeatingThermostat only.
+ Writes the given group id the device's memory. To sync all devices in one room, set them to the same groupid greater than zero.
+ - ecoTemperature <value>
+ For devices of type HeatingThermostat only. Writes the given eco temperature to the device's memory. It can be activated by pressing the rightmost physical button on the device.
+ - comfortTemperature <value>
+ For devices of type HeatingThermostat only. Writes the given comfort temperature to the device's memory. It can be activated by pressing the rightmost physical button on the device.
+ - measurementOffset <value>
+ For devices of type HeatingThermostat only. Writes the given temperature offset to the device's memory. If the internal temperature sensor is not well calibrated, it may produce a systematic error. Using measurementOffset, this error can be compensated. The reading temperature is equal to the measured temperature at sensor + measurementOffset. Usually, the internally measured temperature is a bit higher than the overall room temperature (due to closeness to the heater), so one uses a small negative offset. Must be between -3.5 and 3.5 degree celsius.
+ - minimumTemperature <value>
+ For devices of type HeatingThermostat only. Writes the given minimum temperature to the device's memory. It confines the temperature that can be manually set on the device.
+ - maximumTemperature <value>
+ For devices of type HeatingThermostat only. Writes the given maximum temperature to the device's memory. It confines the temperature that can be manually set on the device.
+ - windowOpenTemperature <value>
+ For devices of type HeatingThermostat only. Writes the given window open temperature to the device's memory. That is the temperature the heater will temporarily set if an open window is detected. Setting it to 4.5 degree or "off" will turn off reacting on open windows.
+ - windowOpenDuration <value>
+ For devices of type HeatingThermostat only. Writes the given window open duration to the device's memory. That is the duration the heater will temporarily set the window open temperature if an open window is detected by a rapid temperature decrease. (Not used if open window is detected by ShutterControl. Must be between 0 and 60 minutes in multiples of 5.
+ - decalcification <value>
+ For devices of type HeatingThermostat only. Writes the given decalcification time to the device's memory. Value must be of format "Sat 12:00" with minutes being "00". Once per week during that time, the HeatingThermostat will open the valves shortly for decalcification.
+ - boostDuration <value>
+ For devices of type HeatingThermostat only. Writes the given boost duration to the device's memory. Value must be one of 5, 10, 15, 20, 25, 30, 60. It is the duration of the boost function in minutes.
+ - boostValveposition <value>
+ For devices of type HeatingThermostat only. Writes the given boost valveposition to the device's memory. It is the valve position in percent during the boost function.
+ - maxValveSetting <value>
+ For devices of type HeatingThermostat only. Writes the given maximum valveposition to the device's memory. The heating thermostat will not open the valve more than this value (in percent).
+ - valveOffset <value>
+ For devices of type HeatingThermostat only. Writes the given valve offset to the device's memory. The heating thermostat will add this to all computed valvepositions during control.
+ - factoryReset
+ Resets the device to factory values. It has to be paired again afterwards.
+ ATTENTION: When using this on a ShutterContact using the MAXLAN backend, the ShutterContact has to be triggered once manually to complete
+ the factoryReset.
+ - associate <value>
+ Associated one device to another. <value> can be the name of MAX device or its 6-digit hex address.
+ Associating a ShutterContact to a {Heating,WallMounted}Thermostat makes it send message to that device to automatically lower temperature to windowOpenTemperature while the shutter is opened. The thermostat must be associated to the ShutterContact, too, to accept those messages.
+ !Attention: After sending this associate command to the ShutterContact, you have to press the button on the ShutterContact to wake it up and accept the command. See the log for a message regarding this!
+ Associating HeatingThermostat and WallMountedThermostat makes them sync their desiredTemperature and uses the measured temperature of the
+ WallMountedThermostat for control.
+ - deassociate <value>
+ Removes the association set by associate.
+ - weekProfile [<day> <temp1>,<until1>,<temp2>,<until2>] [<day> <temp1>,<until1>,<temp2>,<until2>] ...
+ Allows setting the week profile. For devices of type HeatingThermostat or WallMountedThermostat only. Example:
+ set MAX_12345 weekProfile Fri 24.5,6:00,12,15:00,5 Sat 7,4:30,19,12:55,6
+ sets the profile
+ Friday: 24.5 °C for 0:00 - 6:00, 12 °C for 6:00 - 15:00, 5 °C for 15:00 - 0:00
+ Saturday: 7 °C for 0:00 - 4:30, 19 °C for 4:30 - 12:55, 6 °C for 12:55 - 0:00
+ while keeping the old profile for all other days.
+
+
+
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+ Generated events:
+
+ - desiredTemperature
Only for HeatingThermostat and WallMountedThermostat
+ - valveposition
Only for HeatingThermostat
+ - battery
+ - temperature
The measured temperature (= measured temperature at sensor + measurementOffset), only for HeatingThermostat and WallMountedThermostat
+
+
+
+
+MAXLAN
+
+
+ The MAXLAN is the fhem module for the eQ-3 MAX! Cube LAN Gateway.
+
+ The fhem module makes the MAX! "bus" accessible to fhem, automatically detecting paired MAX! devices. It also represents properties of the MAX! Cube. The other devices are handled by the MAX module, which uses this module as its backend.
+
+
+
+ Define
+
+ define <name> MAXLAN <ip-address>[:port] [<pollintervall> [ondemand]]
+
+ port is 62910 by default. (If your Cube listens on port 80, you have to update the firmware with
+ the official MAX! software).
+ If the ip-address is called none, then no device will be opened, so you
+ can experiment without hardware attached.
+ The optional parameter <pollintervall> defines the time in seconds between each polling of data from the cube.
+ You may provide the option ondemand forcing the MAXLAN module to tear-down the connection as often as possible
+ thus making the cube usable by other applications or the web portal.
+
+
+
+
+ Set
+
+ - pairmode [<n>,cancel]
+ Sets the cube into pairing mode for <n> seconds (default is 60s ) where it can be paired with other devices (Thermostats, Buttons, etc.). You also have to set the other device into pairing mode manually. (For Thermostats, this is pressing the "Boost" button for 3 seconds, for example).
+Setting pairmode to "cancel" puts the cube out of pairing mode.
+ - raw <data>
+ Sends the raw <data> to the cube.
+ - clock
+ Sets the internal clock in the cube to the current system time of fhem's machine (uses timezone attribute if set). You can add
+ attr ml set-clock-on-init
+ to your fhem.cfg to do this automatically on startup.
+ - factorReset
+ Reset the cube to factory defaults.
+ - reconnect
+ FHEM will terminate the current connection to the cube and then reconnect. This allows
+ re-reading the configuration data from the cube, as it is only send after establishing a new connection.
+
+
+
+
+ Get
+
+
+
+
+
+ Attributes
+
+ - set-clock-on-init
+ (Default: 1). Automatically call "set clock" after connecting to the cube.
+ - do_not_notify
+ - dummy
+ - loglevel
+ - addvaltrigger
+ - timezone
+ (Default: CET-CEST). Set MAX Cube timezone (requires "set clock" to take effect).
+ NB.Cube time and cubeTimeDifference will not change until Cube next connects.
+
+ - GMT-BST - (UTC +0, UTC+1)
+ - CET-CEST - (UTC +1, UTC+2)
+ - EET-EEST - (UTC +2, UTC+3)
+ - FET-FEST - (UTC +3)
+ - MSK-MSD - (UTC +4)
+
+ The following are settings with no DST (daylight saving time)
+
+ - GMT - (UTC +0)
+ - CET - (UTC +1)
+ - EET - (UTC +2)
+
+
+
+
+
+
+MPD
+ FHEM module to control a MPD like the MPC (MPC = Music Player Command, the command line interface to the Music Player Daemon )
+To install a MPD on a Raspberry Pi you will find a lot of documentation at the web e.g. http://www.forum-raspberrypi.de/Thread-tutorial-music-player-daemon-mpd-und-mpc-auf-dem-raspberry-pi in german
+FHEM Forum : Modul für MPD ( in german )
+
+
+ Define
+
+ define <name> MPD <IP MPD Server | default localhost> <Port MPD Server | default 6600>
+ Example:
+
+ define myMPD MPD 192.168.0.99 7000
+
+ if FHEM and MPD a running on the same device :
+
+ define myMPD MPD
+
+
+
+
+ Set
+ set <name> <what>
+
+ Currently, the following commands are defined.
+
+ play => like MPC play , start playing song in playlist
+ clear => like MPC clear , delete MPD playlist
+ stop => like MPC stop, stops playing
+ pause => like MPC pause
+ previous => like MPC previous, play previous song in playlist
+ next => like MPC next, play next song in playlist
+ random => like MPC random, toggel on/off
+ repaet => like MPC repeat, toggel on/off
+ updateDb => like MPC update
+ volume (%) => like MPC volume %, 0 - 100
+ volumeUp => inc volume ( + attr volumeStep size )
+ volumeDown => dec volume ( - attr volumeStep size )
+ playlist (playlist name) => set playlist on MPD Server
+ playfile (file) => create playlist + add file to playlist + start playing
+ IdleNow => send Idle command to MPD and wait for events to return
+ interval => set polling interval of MPD server, overwrites attr interval temp , use 0 to disable polling
+ reset => reset MPD Modul
+ mpdCMD => same as GET mpdCMD
+
+
+
+ Get
+ get <name> <what>
+
+ Currently, the following commands are defined.
+ music => list all MPD music files in MPD databse
+ playlists => list all MPD playlist in MPD databse
+ playlistsinfo => show current playlist informations
+ webrc => HTML output for a simple Remote Control on FHEM webpage e.g :.
+
+ define <name> weblink htmlCode {fhem("get <name> webrc", 1)}
+ attr <name> room MPD
+
+ statusRequest => get MPD status
+ mpdCMD (cmd) => send a command to MPD Server ( MPD Command Ref )
+ currentsong => get infos from current song in playlist
+ outputs => get name,id,status about all MPD output devices in /etc/mpd.conf
+
+
+
+ Attributes
+
+ - interval = polling interval at MPD server, use 0 to disable polling (default 30)
+ - password (not ready yet) if password on MPD server is set
+ - loadMusic 0|1 = load titles from MPD database at startup
+ - loadPlaylists 0|1 = load playlist names from MPD database at startup
+ - volumeStep 1|2|5|10 = Step size for Volume +/- (default 5)
+ - useIdle 0|1 = send Idle command to MPD and wait for MPD events needs MPD Version 0.16.0 or greater
+ - titleSplit 1|0 = split title to artist and title if no artist is given in songinfo (e.g. radio-stream)
+
+
+ Readings
+
+ all MPD internal values
+
+
+
+MSG
+
+ The MSG device is the backend device for all the message handling (I/O-engine).
+ Under normal conditions only one MSG device is needed to serve multiple frontend
+ message devices like file or email.
+
+
+ Define
+
+ define <name> MSG
+ Specifies the MSG device. A single MSG device could serve multiple MSG frontends.
+ But, for special conditions there could be defined more than one MSG device.
+
+
+
+ Set
+
+ set <name> send|write <devicename>
+
+ Notes:
+
+ To send the data, both send or write could be used.
+ The devicename is the name of a frontenddevice previously
+ defined. Based on the type of the frontend device, the MSG device
+ will send out the lines of data.
+
+ Frontend devices are available for:
+
+ For details about this devices, please review the device-definitions.
+ After sending/writing the data, the data stills exists with the
+ frontend device, MSG do not delete/purge any data, this must be done
+ by the frontend device.
+
+ Examples:
+
+
+
+ Attributes
+
+
+
+
+
+MSGFile
+
+ The MSGFile device is a frontend device for message handling.
+ With a MSGFile device data is written to disk (or other media).
+ Multiple MSGFile devices could be defined.
+ To write the data to disk, a MSG device is necessary.
+ A MSGFile device needs the operating systems rights to write to the filesystem.
+ To set the rights for a directory, please use OS related commands.
+
+
+
+ Define
+
+ define <name> MSGFile <filename>
+ Specifies the MSGFile device. At definition the message counter is set to 0.
+ A filename must be specified at definition.
+
+
+ Examples:
+
+ define myFile MSGFile
+
+
+
+ Set
+ set <name> add|clear|list [text]
+ Set is used to manipulate the message buffer of the device. The message
+ buffer is an array of lines of data, stored serial based on the incoming
+ time into the buffer. Lines of data inside the buffer could not be deleted
+ anymore, except of flashing the whole buffer.
+ add to add lines of data to the message buffer. All data behind
+ "add" will be interpreted as text message. To add a carriage return to the data,
+ please use the CR attribute.
+
+ clear to flash the message buffer and set the line counter to 0.
+ All the lines of data are deleted and the buffer is flushed.
+ list to list the message buffer.
+
+ Examples:
+
+ set myFile add Dies ist Textzeile 1
+ set myFile add Dies ist Textzeile 2
+ set myFile clear
+ Full working example to write two lines of data to a file:
+ define myMsg MSG
+ define myFile MSGFile /tmp/fhemtest.txt
+ attr myFile filemode append
+ set myFile add Textzeile 1
+ set myFile add Textzeile 2
+ set myMsg write myFile
+ set myFile clear
+
+
+
+ Attributes
+
+ - filename
+ sets the filename, must be a fully qualified filename.
+ FHEM must have the rights to write this file to the directory
+ - filemode
+ sets the filemode, valid are "new" or "append"
+ new creates a new, empty file and writes the data to this file. Existing files are cleared, the data is lost!
+ append uses, if available, an existing file and writes the
+ buffer data to the end of the file. If the file do not exist, it will
+ be created
+ - CR
+ set the option to write a carriage return at the end of the line.
+ CR could be set to 0 or 1, 1 enables this feature
+ - loglevel
+
+
+
+
+MSGMail
+
+ The MSGMail device is a frontend device for mail message handling.
+ With a MSGMaildevice data is fowarded to a mail provider and send to a recipent.
+ Multiple MSGMail devices could be defined.
+ MSGMail supports by the moment only mail provider, which uses SSL secured connection
+ like Googlemail, GMX, Yahoo or 1und1 for example.
+ To send an email, a MSG device is necessary.
+ MAIL::Lite and Net::SMTP::SSL from CPAN is needed to use MSGMail!!
+
+
+
+ Define
+
+ define <name> MSGMail <from> <to> <smtphost> <authfile>
+ Specifies the MSGMail device. At definition the message counter is set to 0.
+ From, To, SMTPHost and the authfile (see attributes below) need to be defined
+ at definition time.
+
+
+ Examples:
+
+ define myMail MSGMail from@address.com to@address.com smtp.provider.host /etc/msgauthfile
+
+
+
+ Set
+ set <name> add|clear|list [text]
+ Set is used to manipulate the message buffer of the device. The message
+ buffer is an array of lines of data, stored serial based on the incoming
+ time into the buffer. Lines of data inside the buffer could not be deleted
+ anymore, except of flashing the whole buffer.
+ add to add lines of data to the message buffer. All data behind
+ "add" will be interpreted as text message. To add a carriage return to the data,
+ please use the CR attribute.
+
+ clear to flash the message buffer and set the line counter to 0.
+ All the lines of data are deleted and the buffer is flushed.
+ list to list the message buffer.
+
+ Examples:
+
+ set myMail add Dies ist Textzeile 1
+ set myMail add Dies ist Textzeile 2
+ set myMail clear
+ Full working example to send two lines of data to a recipent:
+ define myMsg MSG
+ define myMail MSGMail donald.duck@entenhausen.com dagobert.duck@duck-banking.com smtp.entenhausen.net /etc/fhem/msgmailauth
+ attr myMail smtpport 9999
+ attr myMail subject i need more money
+ attr myMail CR 0
+ set myMail add Please send me
+ set myMail add 1.000.000 Taler
+ set myMsg send myMail
+ set myMail clear
+
+
+
+
+ Attributes
+
+ Almost all of these attributes are not optional, most of them could set at definition.
+ - from
+ sets the mail address of the sender
+ - to
+ sets the mail address of the recipent
+ - smtphost
+ sets the name of the smtphost, for example for GMX
+ you could use mail.gmx.net or for Googlemail the smtphost is
+ smtp.googlemail.com
+ - smtpport (optional)
+ sets the port of the smtphost, for example for GMX
+ or for Googlemail the smtport is 465, which is also
+ the default and do not need to be set
+ - subject (optional)
+ sets the subject of this email. Per default the subject is set to "FHEM"
+
+ - authfile
+ sets the authfile for the SSL connection to the SMTP host
+ the authfile is a simple textfile with the userid in line 1 and
+ the password in line 2.
+ Example:
+ 123user45
+ strenggeheim
+ It is a good behaviour to protect this data and put the file, for
+ example into the /etc directory and set the rights to 440
+ (chmod 440 /etc/msgmailauthfile), so that not everyone could see the contents
+ of the file. FHEM must have access to this file to read the userid and password.
+
+
+ - CR
+ set the option to write a carriage return at the end of the line.
+ CR could be set to 0 or 1, 1 enables this feature.
+ Per default this attribute is enabled
+ - loglevel
+
+
+
+
+
+NetIO230B
+
+
+ fhem-module for NetIO 230B Power Distribution Unit (see: NetIO 230B
+ (koukaam.se))
+
+ Note: this module needs the HTTP::Request and LWP::UserAgent perl modules.
+
+ Please also note: the PDU must use firmware 3.1 or later and set to unencrypted mode.
+
+
+ Define
+
+
+ define <name> NetIO230B <ip-address> <socket number(s)
+ > [<user name> <password>]
+
+ define <name> NetIO230B <ip-address> <socket number(s)
+ > [<config file path>]
+
+
+ Defines a switching device, where sockets can be switched
+
+
+ - separately (just use 0-4 as socket number)
+ - all together (use 1234 as socket number)
+ - in arbitrary groups (e.g 13 switches socket 1 and 3, 42
+ switches socket 2 and 4, etc...), invalid numbers are
+ ignored
+
+
+ User name and password are optional. When no user name or
+ password is passed, the module looks for a configfile at
+ '/var/log/fhem/netio.conf'. If no config file is found, it
+ uses 'admin/admin' as user/pass, since this is the default
+ configuration for the device.
+
+ Alternatively you can pass a path to a configfile instead of
+ the user/pass combo. (e.g. /var/tmp/tmp.conf)
+ Configfile-Format:
+
+
+ %config= (
+ host => "192.168.61.40",
+ user => "admin",
+ password => "admin"
+ );
+
(All settings optional)
+
+
+ Examples:
+
+ define Socket3 NetIO230B 192.168.178.10 3
+ define Socket1_and_4 NetIO230B 192.168.178.10 14
+ define coffeemaker NetIO230B 192.168.178.10 1 username secretpassword
+ define coffeemaker_and_light NetIO230B 192.168.178.10 23 /var/log/kitchen.conf
+
+
+
+
+
+ Get
+
+ get <name> state
+
+ returns the state of the socket(s)
+
+ Example:
+
+ get coffeemaker_and_light => on or off
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ on
+ off
+
+ Examples:
+
+ set coffeemaker_and_light on
+
+
+
+
+
+
+
+
+
+
+ ONKYO_AVR
+
+
+ Define
+
+ define <name> ONKYO_AVR <ip-address-or-hostname> [<protocol-version>] [<zone>] [<poll-interval>]
+
+ This module controls ONKYO A/V receivers via network connection.
+
+ Defining an ONKYO device will schedule an internal task (interval can be set with optional parameter <poll-interval> in seconds, if not set, the value is 75 seconds), which periodically reads the status of the device and triggers notify/filelog commands.
+
+ Example:
+
+ define avr ONKYO_AVR 192.168.0.10
+
+ # With explicit protocol version 2013 and later
+ define avr ONKYO_AVR 192.168.0.10 2013
+
+ # With protocol version prior 2013
+ define avr ONKYO_AVR 192.168.0.10 pre2013
+
+ # With zone2
+ define avr ONKYO_AVR 192.168.0.10 pre2013 zone2
+
+ # With custom interval of 60 seconds
+ define avr ONKYO_AVR 192.168.0.10 pre2013 main 60
+
+ # With zone2 and custom interval of 60 seconds
+ define avr ONKYO_AVR 192.168.0.10 pre2013 zone2 60
+
+
+
+ Set
+
+ set <name> <command> [<parameter>]
+
+ Currently, the following commands are defined (may vary depending on zone).
+
+ -
+ on - powers on the device
+
+ -
+ off - turns the device in standby mode
+
+ -
+ sleep 1..90,off - sets auto-turnoff after X minutes
+
+ -
+ toggle - switch between on and off
+
+ -
+ volume 0...100 - set the volume level in percentage
+
+ -
+ volumeUp - increases the volume level
+
+ -
+ volumeDown - decreases the volume level
+
+ -
+ mute on,off - controls volume mute
+
+ -
+ input - switches between inputs
+
+ -
+ statusRequest - requests the current status of the device
+
+ -
+ remoteControl - sends remote control commands; see remoteControl help
+
+
+
+
+ Get
+
+ get <name> <what>
+
+ Currently, the following commands are defined (may vary depending on zone):
+
+
+ power
+ input
+ volume
+ mute
+ sleep
+
+
+
+ Generated Readings/Events (may vary depending on zone):
+
+ -
+ input - Shows currently used input; part of FHEM-4-AV-Devices compatibility
+
+ -
+ mute - Reports the mute status of the device (can be "on" or "off")
+
+ -
+ power - Reports the power status of the device (can be "on" or "off")
+
+ -
+ presence - Reports the presence status of the receiver (can be "absent" or "present"). In case of an absent device, control is not possible.
+
+ -
+ sleep - Reports current sleep state (can be "off" or shows timer in minutes)
+
+ -
+ state - Reports current power state and an absence of the device (can be "on", "off" or "absent")
+
+ -
+ volume - Reports current volume level of the receiver in percentage values (between 0 and 100 %)
+
+
+
+
+
+OREGON
+
+ The OREGON module interprets Oregon sensor messages received by a RFXCOM receiver. You need to define a RFXCOM receiver first.
+ See RFXCOM.
+
+
+
+
+ Define
+
+ define <name> OREGON <deviceid>
+
+ <deviceid> is the device identifier of the Oregon sensor. It consists of the sensors name and a one byte hex string (00-ff) that identifies the sensor. The define statement with the deviceid is generated automatically by autocreate. The following sensor names are used:
+BTHR918, BTHR918N, PCR800 RGR918, RTGR328N, THN132N, THGR228N, THGR328N, THGR918, THR128, THWR288A, THGR810, UV138, UVN800, WGR918, WGR800, WTGR800_A, WTGR800_T.
+
+The one byte hex string is generated by the Oregon sensor when is it powered on. The value seems to be randomly generated. This has the advantage that you may use more than one Oregon sensor of the same type even if it has no switch to set a sensor id. For exampple the author uses three BTHR918 sensors at the same time. All have different deviceids. The drawback is that the deviceid changes after changing batteries.
+
+ Example:
+ define Kaminzimmer OREGON BTHR918N_ab
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+ OWAD
+ FHEM module to commmunicate with 1-Wire A/D converters
+ This 1-Wire module works with the OWX interface module or with the OWServer interface module
+ (prerequisite: Add this module's name to the list of clients in OWServer).
+ Please define an OWX device or OWServer device first.
+
Example
+
+ define OWX_AD OWAD 724610000000 45
+
+ attr OWX_AD DAlarm high
+
+ attr OWX_AD DFactor 31.907097
+
+ attr OWX_AD DHigh 50.0
+
+ attr OWX_AD DName RelHumidity|humidity
+
+ attr OWX_AD DOffset -0.8088
+
+ attr OWX_AD DUnit percent|%
+
+
+
+ Define
+
+ define <name> OWAD [<model>] <id> [<interval>] or
+ define <name> OWAD <fam>.<id> [<interval>]
+
Define a 1-Wire A/D converter.
+
+ -
+
[<model>] Defines the A/D converter model (and thus 1-Wire
+ family id), currently the following values are permitted:
+ - model DS2450 with family id 20 (default if the model parameter is
+ omitted)
+
+
+ -
+
<fam>
+ 2-character unique family id, see above
+
+ -
+
<id>
+ 12-character unique ROM id of the converter device without family id and CRC
+ code
+ -
+
<interval>
+ Measurement interval in seconds. The default is 300 seconds.
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+ For each of the following attributes, the channel identification A,B,C,D may be used.
+ attr <name> <channel>Name
+ <string>|<string>
+ name for the channel | a type description for the measured value.
+ attr <name> <channel>Unit
+ <string>|<string>
+ unit of measurement for this channel | its abbreviation.
+ - deprecated:
attr <name> <channel>Offset
+ <float>
+ offset added to the reading in this channel.
+ - deprecated:
attr <name> <channel>Factor
+ <float>
+ factor multiplied to (reading+offset) in this channel.
+ -
attr <name> <channel>Function
+ <string>
+ arbitrary functional expression involving the values VA,VB,VC,VD. VA is replaced by
+ the measured voltage in channel A, etc. This attribute allows linearization of measurement
+ curves as well as the mixing of various channels. Replacement for Offset/Factor !
+ attr <name> <channel>Alarm
+ <string>
+ alarm setting in this channel, either both, low, high or none (default).
+ attr <name> <channel>Low
+ <float>
+ measurement value (on the scale determined by offset and factor) for low
+ alarm.
+ attr <name> <channel>High
+ <float>
+ measurement value (on the scale determined by offset and factor) for high
+ alarm.
+ - Standard attributes alias, comment, event-on-update-reading, event-on-change-reading, stateFormat, room, eventMap, loglevel,
+ webCmd
+
+
+
+ OWCOUNT
+ FHEM module to commmunicate with 1-Wire Counter/RAM DS2423 or its emulation DS2423emu
+ This 1-Wire module works with the OWX interface module or with the OWServer interface module
+ (prerequisite: Add this module's name to the list of clients in OWServer).
+ Please define an OWX device or OWServer device first.
+
Example
+ define OWC OWCOUNT 1D.CE780F000000 60
+
+ attr OWC AName Energie|energy
+
+ attr OWC AUnit kWh|kWh
+
+ attr OWC APeriod hour
+
+ attr OWC ARate Leistung|power
+
+ attr OWX_AMode daily
+
+
+
+ Define
+
+ define <name> OWCOUNT [<model>] <id> [<interval>] or
+ define <name> OWCOUNT <fam>.<id> [<interval>]
+
Define a 1-Wire counter.
+
+ -
+
[<model>] Defines the counter model (and thus 1-Wire family
+ id), currently the following values are permitted:
+ - model DS2423 with family id 1D (default if the model parameter is
+ omitted)
+ - model DS2423enew with family id 1D - emulator, works like DS2423
+ - model DS2423eold with family id 1D - emulator, works like DS2423 except that the internal memory is not present
+
+
+ -
+
<fam>
+ 2-character unique family id, see above
+
+ -
+
<id>
+ 12-character unique ROM id of the converter device without family id and CRC
+ code
+ -
+
<interval>
+ Measurement interval in seconds. The default is 300 seconds.
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+ For each of the following attributes, the channel identification A,B may be used.
+
+
+
+OWDevice
+
+
+
+ Define
+
+ define <name> OWDevice <address> [<interval>]
+
+
+ Defines a 1-wire device. The 1-wire device is identified by its <address>. It is
+ served by the most recently defined OWServer.
+
+
+ If <interval> is given, the OWServer is polled every <interval> seconds for
+ a subset of readings.
+
+
+ OWDevice is a generic device. Its characteristics are retrieved at the time of the device's
+ definition. The available readings that you can get or set as well as those that are
+ regularly retrieved by polling can be seen when issuing the
+ list <name> command.
+
+ The following devices are currently supported:
+
+ - DS2401 - Silicon Serial Number
+ - DS1990A - Serial Number iButton
+ - DS2405 - Addressable Switch
+ - DS18S20 - High-Precision 1-Wire Digital Thermometer
+ - DS1920 - iButton version of the thermometer
+ - DS2406, DS2407 - Dual Addressable Switch with 1kbit Memory
+ - DS2436 - Battery ID/Monitor Chip
+ - DS2423 - 4kbit 1-Wire RAM with Counter
+ - DS2450 - Quad A/D Converter
+ - DS1822 - Econo 1-Wire Digital Thermometer
+ - DS2415 - 1-Wire Time Chip
+ - DS1904 - RTC iButton
+ - DS2438 - Smart Battery Monitor
+ - DS2417 - 1-Wire Time Chip with Interrupt
+ - DS18B20 - Programmable Resolution 1-Wire Digital Thermometer
+ - DS2408 - 1-Wire 8 Channel Addressable Switch
+ - DS2413 - Dual Channel Addressable Switch
+ - DS1825 - Programmable Resolution 1-Wire Digital Thermometer with ID
+ - EDS0066 - Multisensor for temperature and pressure
+ - LCD - LCD controller by Louis Swart
+
+
+ Adding more devices is simple. Look at the code (subroutine OWDevice_GetDetails ).
+
+ This module is completely unrelated to the 1-wire modules with names all in uppercase.
+
+ Note:The state reading never triggers events to avoid confusion.
+
+ Example:
+
+
+ define myOWServer localhost:4304
+ get myOWServer devices
+ 10.487653020800 DS18S20
+ define myT1 10.487653020800
+ list myT1 10.487653020800
+ Internals:
+ ...
+ Readings:
+ 2012-12-22 20:30:07 temperature 23.1875
+ Fhem:
+ ...
+ getters:
+ address
+ family
+ id
+ power
+ type
+ temperature
+ templow
+ temphigh
+ polls:
+ temperature
+ setters:
+ alias
+ templow
+ temphigh
+ ...
+
+
+
+
+
+
+ Set
+
+ set <name> interval <value>
+
+ value modifies the interval for polling data. The unit is in seconds.
+
+ set <name> <reading> <value>
+
+ Sets <reading> to <value> for the 1-wire device <name>. The permitted values are defined by the underlying
+ 1-wire device type.
+
+ Example:
+
+
+
+
+
+
+
+ Get
+
+ get <name> <reading> <value>
+
+ Gets <reading> for the 1-wire device <name>. The permitted values are defined by the underlying
+ 1-wire device type.
+
+ Example:
+
+
+
+
+
+
+ Attributes
+
+
+ - IODev:
+ Set the OWServer device which should be used for sending and receiving data
+ for this OWDevice. Note: Upon startup fhem assigns each OWDevice
+ to the last previously defined OWServer. Thus it is best if you define OWServer
+ and OWDevices in blocks: first define the first OWServer and the OWDevices that
+ belong to it, then continue with the next OWServer and the attached OWDevices, and so on.
+
+ - trimvalues: removes leading and trailing whitespace from readings. Default is 1 (on).
+ - polls: a comma-separated list of readings to poll. This supersedes the list of default readings to poll.
+ - interfaces: supersedes the interfaces exposed by that device.
+ - model: preset with device type, e.g. DS18S20.
+ - resolution: resolution of temperature reading in bits, can be 9, 10, 11 or 12.
+ Lower resolutions allow for faster retrieval of values from the bus.
+ Particularly reasonable for large 1-wire installations to reduce busy times for FHEM.
+ - eventMap
+ - readingFnAttributes
+
+
+
+
+
+
+
+
+
+
+OWFS
+
+ OWFS is a suite of programs that designed to make the 1-wire bus and its
+ devices easily accessible. The underlying priciple is to create a virtual
+ filesystem, with the unique ID being the directory, and the individual
+ properties of the device are represented as simple files that can be read
+ and written.
+
+ Note: You need the owperl module from
+ http://owfs.org/.
+
+
+
+ Define
+
+ define <name> OWFS <owserver-ip:port> <model> [<id>]
+
+
+ Define a 1-wire device to communicate with an OWFS-Server.
+
+ <owserver-ip:port>
+
+ IP-address:port from OW-Server.
+
+ <model>
+
+ Define the type of the input device.
+ Currently supportet: DS1420, DS9097 (for passive Adapter)
+
+ <id>
+
+ Corresponding to the id of the input device. Only for active Adapter.
+
+
+
+ Note:
+ If the owserver-ip:port is called none , then
+ no device will be opened, so you can experiment without hardware attached.
+
+ Example:
+
+ #define an active Adapter:
+ define DS9490R OWFS 127.0.0.1:4304 DS1420 93302D000000
+
+
+
+ #define a passive Adapter:
+ define DS9097 OWFS 127.0.0.1:4304 DS9097
+
+
+
+
+ Set
+
+
+ Get
+
+ get <name> <value>
+
+ where value is one of (not supported by passive Devices e.g. DS9097):
+
+ -
+
address (read-only)
+ The entire 64-bit unique ID. address starts with the family code.
+ Given as upper case hexidecimal digits (0-9A-F).
+
+ -
+
crc8 (read-only)
+ The 8-bit error correction portion. Uses cyclic redundancy check. Computed
+ from the preceeding 56 bits of the unique ID number.
+ Given as upper case hexidecimal digits (0-9A-F).
+
+ -
+
family (read-only)
+ The 8-bit family code. Unique to each type of device.
+ Given as upper case hexidecimal digits (0-9A-F).
+
+ -
+
id (read-only)
+ The 48-bit middle portion of the unique ID number. Does not include the
+ family code or CRC.
+ Given as upper case hexidecimal digits (0-9A-F).
+
+ -
+
locator (read-only)
+ Uses an extension of the 1-wire design from iButtonLink company that
+ associated 1-wire physical connections with a unique 1-wire code. If
+ the connection is behind a Link Locator the locator will show a unique
+ 8-byte number (16 character hexidecimal) starting with family code FE.
+ If no Link Locator is between the device and the master, the locator
+ field will be all FF.
+
+ -
+
present (read-only)
+ Is the device currently present on the 1-wire bus?
+
+ -
+
type (read-only)
+ Part name assigned by Dallas Semi. E.g. DS2401 Alternative packaging
+ (iButton vs chip) will not be distiguished.
+
+
+
+ Examples:
+
+ get DS9490R type
+ DS9490R type => DS1420
+ get DS9490R address
+ DS9490R address => 8193302D0000002B
+
+
+
+
+
+ Attributes
+
+ - dummy
+ - do_not_notify
+ - loglevel
+ - showtime
+ -
+ temp-scale
+ Specifies the temperature-scale unit:
+
+ C
+ Celsius. This is the default.
+ F
+ Fahrenheit
+ K
+ Kelvin
+ R
+ Rankine
+
+
+
+
+
+
+
+
+ OWID
+ FHEM module for 1-Wire devices that know only their unique ROM ID
+ This 1-Wire module works with the OWX interface module or with the OWServer interface module
+ Please define an OWX device or OWServer device first.
+
Example
+
+ define ROM1 OWX_ID OWCOUNT 09.CE780F000000 10
+
+
+
+ Define
+
+ define <name> OWID <fam> <id> [<interval>] or
+ define <name> OWID <fam>.<id> [<interval>]
+
Define a 1-Wire device.
+
+
+ -
+
<fam>
+ 2-character unique family id, see above
+
+ -
+
<id>
+ 12-character unique ROM id of the converter device without family id and CRC
+ code
+
+ -
+
<interval>
+ Interval in seconds for checking the presence of the device. The default is 300 seconds.
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ OWLCD
+ FHEM module to commmunicate with the 1-Wire LCD controller
+ from Louis Swart (1-Wire family id FF). See also the corresponding Wiki page.
+ Note: This 1-Wire module so far works only with the OWX interface module. Please
+ define an OWX device first.
+
Example
+
+ define OWX_LCD OWLCD 9F0700000100
+
+
+
+
+ Define
+
+ define <name> OWLCD <id> or
+ define <name> OWLCD FF.<id>
+
Define a 1-Wire LCD device.
+
+ -
+
<id>
+ 12-character unique ROM id of the converter device without family id and CRC
+ code
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+
+
+ OWMULTI
+ FHEM module to commmunicate with 1-Wire multi-sensors, currently the DS2438 smart battery
+ monitor This 1-Wire module works with the OWX interface module or with the OWServer interface module
+ (prerequisite: Add this module's name to the list of clients in OWServer).
+ Please define an OWX device or OWServer device first.
+ Example
+
+ define OWX_M OWMULTI 7C5034010000 45
+
+ attr OWX_M VName relHumidity|humidity
+
+ attr OWX_M VUnit percent|%
+
+ attr OWX_M VFunction (161.29 * V / VDD - 25.8065)/(1.0546 - 0.00216 * T)
+
+
+ Define
+
+ define <name> OWMULTI [<model>] <id> [<interval>] or
+ define <name> OWMULTI <fam>.<id> [<interval>]
+
Define a 1-Wire multi-sensor
+
+ -
+
[<model>] Defines the sensor model (and thus 1-Wire family
+ id), currently the following values are permitted:
+ - model DS2438 with family id 26 (default if the model parameter is omitted).
+ Measured is a temperature value, an external voltage and the current supply
+ voltage
+
+
+ -
+
<fam>
+ 2-character unique family id, see above
+
+ -
+
<id>
+ 12-character unique ROM id of the converter device without family id and CRC
+ code
+ -
+
<interval>
+ Measurement interval in seconds. The default is 300 seconds.
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+ attr <name> VName
+ <string>|<string>
+ name for the channel | a type description for the measured value.
+ attr <name> VUnit
+ <string>|<string>
+ unit of measurement for this channel | its abbreviation.
+ attr <name> VFunction
+ <string>
+ arbitrary functional expression involving the values VDD, V, T. Example see
+ above.
+ - VDD is replaced by the measured supply voltage in Volt,
+ - V by the measured external voltage,
+ - T by the measured and corrected temperature in its unit
+
+ attr <name> tempOffset <float>
+
+ temperature offset in °C added to the raw temperature reading.
+ attr <name> tempUnit
+ Celsius|Kelvin|Fahrenheit
+
+ unit of measurement (temperature scale), default is Celsius = °C
+ - Standard attributes alias, comment, event-on-update-reading, event-on-change-reading, stateFormat, room, eventMap, loglevel,
+ webCmd
+
+
+
+ OWSWITCH
+ FHEM module to commmunicate with 1-Wire Programmable Switches
+ This 1-Wire module works with the OWX interface module or with the OWServer interface module
+ (prerequisite: Add this module's name to the list of clients in OWServer).
+ Please define an OWX device or OWServer device first.
+ Example
+
+ define OWX_S OWSWITCH DS2413 B5D502000000 60
+
+ attr OWX_S AName Lampe|light
+
+ attr OWX_S AUnit AN|AUS
+
+
+ Define
+
+ define <name> OWSWITCH [<model>] <id> [<interval>] or
+ define <name> OWSWITCH <fam>.<id> [<interval>]
+
Define a 1-Wire switch.
+
+ -
+
[<model>] Defines the switch model (and thus 1-Wire family
+ id), currently the following values are permitted:
+ - model DS2413 with family id 3A (default if the model parameter is omitted).
+ 2 Channel switch with onboard memory
+ - model DS2406 with family id 12. 2 Channel switch
+ - model DS2408 with family id 29. 8 Channel switch
+
+
+ -
+
<fam>
+ 2-character unique family id, see above
+
+ -
+
<id>
+ 12-character unique ROM id of the device without family id and CRC
+ code
+ -
+
<interval>
+ Measurement interval in seconds. The default is 300 seconds.
+
+
+ Set
+
+
+ Get
+
+ -
+
get <name> id
+ Returns the full 1-Wire device id OW_FAMILY.ROM_ID.CRC
+ -
+
get <name> present
+
+ Returns 1 if this 1-Wire device is present, otherwise 0.
+ -
+
get <name> interval Returns measurement interval in
+ seconds.
+ -
+
get <name> input <channel-name> state for
+ channel (A,B, ... or defined channel name) This value reflects the measured value,
+ not necessarily the one set as output state, because the output transistors are open
+ collector switches. A measured state of 1 = OFF therefore corresponds to an output
+ state of 1 = OFF, but a measured state of 0 = ON can also be due to an external
+ shortening of the output.
+ -
+
get <name> gpio Obtain state of all channels
+
+
+ Attributes For each of the following attributes, the channel identification A,B,...
+ may be used.
+
+
+OWServer
+
+
+
+ Define
+
+ define <name> OWServer <protocol>
+
+
+ Defines a logical OWServer device. OWServer is the server component of the
+ 1-Wire Filesystem. It serves as abstraction layer
+ for any 1-wire devices on a host. <protocol> has
+ format <hostname>:<port>. For details see
+ owserver documentation.
+
+ You need OWNet.pm from owfs.org, which is normally deployed with FHEM. As at 2012-12-23 the OWNet module
+ on CPAN has an issue which renders it useless for remote connections.
+
+ The actual 1-wire devices are defined as OWDevice devices.
+ If autocreate is enabled, all the devices found are created at
+ start of FHEM automatically.
+
+ This module is completely unrelated to the 1-wire modules with names all in uppercase.
+
+ Examples:
+
+ define myLocalOWServer OWServer localhost:4304
+ define myRemoteOWServer OWServer raspi:4304
+
+
+ Notice: if you get no devices add both localhost and the FQDN of your owserver as server directives
+ to the owserver configuration file
+ on the remote host.
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of
+ reopen
+ Reopens the connection to the owserver.
+
+ - owserver (OWFS) specific settings:
+
+ 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
+
+
+ For further informations have look on owserver manual).
+
+
+
+
+
+
+ Get
+
+ get <name> <value>
+
+ where value is one of
+ devices
+ Lists the addresses and types of all 1-wire devices provided by the owserver. Also shows
+ the corresponding OWDevice if one is defined for the respective 1-wire devices.
+
+ errors
+ List a view of error statistics.
+ - owserver (OWFS) specific settings:
+
+ /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
+
+
+ For further informations have look on owserver manual).
+
+
+
+
+
+
+ Attributes
+
+ - nonblocking
+ Get all readings (OWServer / OWDevice) via a child process. This ensures, that FHEM
+ is not blocked during communicating with the owserver.
+ Example:
+ attr <name> nonblocking 1
+
+ - eventMap
+ - readingFnAttributes
+
+
+ Note: unset nonblocking if you experience lockups of FHEM.
+
+
+
+
+OWTEMP
+
+ High-Precision 1-Wire Digital Thermometer.
+
+
+ Note:
+ Please define an OWFS device first.
+
+
+
+ Define
+
+ define <name> OWTEMP <id> [<interval>] [<alarminterval>]
+
+
+ Define a 1-wire Digital Thermometer device.
+
+ <id>
+
+ Corresponding to the id of the input device.
+ Set <id> to none for demo mode.
+
+ <interval>
+
+ Sets the status polling intervall in seconds to the given value. The default is 300 seconds.
+
+ <alarminterval>
+
+ Sets the alarm polling intervall in seconds to the given value. The default is 300 seconds.
+
+
+
+ Note:
+ Currently supported type: DS18S20 .
+
+ Example:
+
+ define KG.hz.TF.01 OWTEMP 14B598010800 300 60
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ -
+
templow (read-write)
+ The upper limit for the low temperature alarm state.
+
+ -
+
temphigh (read-write)
+ The lower limit for the high temperature alarm state.
+
+ -
+
ALARMINT (write-only)
+ Sets the alarm polling intervall in seconds to the given value.
+
+ -
+
INTERVAL (write-only)
+ Sets the status polling intervall in seconds to the given value.
+
+
+
+
+
+ Get
+
+ get <name> <value>
+
+ where value is one of:
+
+ - address (read-only)
+ - crc8 (read-only)
+ - family (read-only)
+ - id (read-only)
+ - locator (read-only)
+ - present (read-only)
+ -
+
temperature (read-only)
+ Read by the chip at high resolution (~12 bits). Units are selected from
+ the defined OWFS Device. See temp-scale for choices.
+
+ - templow (read-write)
+ - temphigh (read-write)
+ - type (read-only)
+
+
+ Examples:
+
+ get KG.hz.TF.01 type
+ KG.hz.TF.01 type => DS18S20
+ get KG.hz.TF.01 temperature
+ KG.hz.TF.01 temperature => 38.2500 (Celsius)
+
+
+
+
+
+ Attributes
+
+
+
+
+
+
+ OWTHERM
+ FHEM module to commmunicate with 1-Wire bus digital thermometer devices
+ This 1-Wire module works with the OWX interface module or with the OWServer interface module
+ (prerequisite: Add this module's name to the list of clients in OWServer).
+ Please define an OWX device or OWServer device first.
+
+ Example
+
+ define OWX_T OWTHERM DS18B20 E8D09B030000 300
+
+ attr OWX_T tempUnit Kelvin
+
+
+
+ Define
+
+ define <name> OWTHERM [<model>] <id> [<interval>] or
+ define <name> OWTHERM <fam>.<id> [<interval>]
+
Define a 1-Wire digital thermometer device.
+
+ -
+
[<model>] Defines the thermometer model (and thus 1-Wire family
+ id) currently the following values are permitted:
+
+ - model DS1820 with family id 10 (default if the model parameter is omitted)
+ - model DS1822 with family id 22
+ - model DS18B20 with family id 28
+
+
+ -
+
<fam>
+ 2-character unique family id, see above
+ -
+
<id>
+ 12-character unique ROM id of the thermometer device without family id and CRC
+ code
+
+ -
+
<interval>
+ Temperature measurement interval in seconds. The default is 300 seconds.
+
+
+
+ Set
+
+ -
+
set <name> interval <int> Temperature
+ readout interval in seconds. The default is 300 seconds. Attention:This is the
+ readout interval. Whether an actual temperature measurement is performed, is determined by the
+ tempConv attribute
+ -
+
set <name> tempHigh <float>
+ The high alarm temperature (on the temperature scale chosen by the attribute
+ value)
+ -
+
set <name> tempLow <float>
+ The low alarm temperature (on the temperature scale chosen by the attribute
+ value)
+
+
+
+ Get
+
+
+
+ Attributes
+
+ attr <name> stateAL <string>
+
+ character string for denoting low alarm condition, default is down triangle,
+ e.g. the code ▾ leading to the sign ▾
+ attr <name> stateAH <string>
+
+ character string for denoting high alarm condition, default is upward
+ triangle, e.g. the code ▴ leading to the sign ▴
+ -
+
attr <name> tempConv onkick|onread
+
+ determines, whether a temperature measurement will happen when "kicked"
+ through the OWX backend module (all temperature sensors at the same time), or on
+ reading the sensor (1 second waiting time, default).
+ attr <name> tempOffset <float>
+
+ temperature offset in °C added to the raw temperature reading.
+ attr <name> tempUnit
+ Celsius|Kelvin|Fahrenheit
+
+ unit of measurement (temperature scale), default is Celsius = °C
+ -
+
attr <name> resolution 9|10|11|12 Temperature
+ resolution in bit, only relevant for DS18B20
+ -
+
attr <name> interval <int> Temperature
+ readout interval in seconds. The default is 300 seconds. Attention:This is the
+ readout interval. Whether an actual temperature measurement is performed, is determined by the
+ tempConv attribute
+ -
+
attr <name> tempHigh <float>
+
+ high alarm temperature (on the temperature scale chosen by the attribute
+ value).
+ -
+
attr <name> tempLow <float>
+
+ low alarm temperature (on the temperature scale chosen by the attribute
+ value).
+
+ - Standard attributes alias, comment, event-on-update-reading, event-on-change-reading, stateFormat, room, eventMap, loglevel,
+ webCmd
+
+
+
+ OWX
+ FHEM module to commmunicate with 1-Wire bus devices
+
+ - via an active DS2480/DS2482/DS2490/DS9097U bus master interface attached to an USB
+ port or
+ - via a passive DS9097 interface attached to an USB port or
+ - via a network-attached CUNO or through a COC on the RaspBerry Pi
+ - via an Arduino running OneWireFirmata attached to USB
+ Internally these interfaces are vastly different, read the corresponding Wiki pages
+
+
+ Example
+
+ define OWio1 OWX /dev/ttyUSB1
+
+ define OWio2 OWX COC
+
+ define OWio3 OWX 10
+
+
+
+
+ Define
+
+ define <name> OWX <serial-device> or
+ define <name> OWX <cuno/coc-device> or
+ define <name> OWX <arduino-pin>
+
Define a 1-Wire interface to communicate with a 1-Wire bus.
+
+
+
+ -
+
<serial-device> The serial device (e.g. USB port) to which the
+ 1-Wire bus is attached.
+ -
+
<cuno-device> The previously defined CUNO to which the 1-Wire bus
+ is attached.
+ -
+
<arduino-pin> The pin of the previous defined FRM
+ to which the 1-Wire bus is attached. If there is more than one FRM device defined
+ use IODev attribute to select which FRM device to use.
+
+
+
+ Set
+
+ -
+
set <name> interval <value>
+
+
sets the time period in seconds for "kicking" the 1-Wire bus (default
+ is 300 seconds). This means:
+ - With 1-Wire bus interfaces that do not supply power to the 1-Wire bus (attr
+ buspower parasitic), the 1-Wire bus is reset at these intervals.
+ - With 1-Wire bus interfaces that supply power to the 1-Wire bus (attr
+ buspower = real), all temperature measurement devices on the bus receive the
+ command to start a temperature conversion (saves a lot of time when reading)
+ - With 1-Wire bus interfaces that contain a busmaster chip, the response to a
+ reset pulse contains information about alarms.
+
+
+ -
+
set <name> followAlarms on|off
+
+
instructs the module to start an alarm search in case a reset pulse
+ discovers any 1-Wire device which has the alarm flag set.
+
+
+
+ Get
+
+ -
+
get <name> alarms
+
performs an "alarm search" for devices on the 1-Wire bus and, if found,
+ generates an event in the log (not with CUNO).
+ -
+
get <name> devices
+
redicovers all devices on the 1-Wire bus. If a device found has a
+ previous definition, this is automatically used. If a device is found but has no
+ definition, it is autocreated. If a defined device is not on the 1-Wire bus, it is
+ autodeleted.
+
+
+
+ Attributes
+
+
+
+PCA301
+
+
+
+ The PCA301 is a RF controlled AC mains plug with integrated power meter functionality from ELV.
+
+ It can be integrated in to FHEM via a JeeLink as the IODevice.
+
+ The JeeNode sketch required for this module can be found in .../contrib/arduino/36_PCA301-pcaSerial.zip.
+
+
+ Define
+
+ define <name> PCA301 <addr> <channel>
+
+ addr is a 6 digit hex number to identify the PCA301 device.
+ channel is a 2 digit hex number to identify the PCA301 device.
+ Note: devices are autocreated on reception of the first message.
+
+
+
+
+ Set
+
+ - on
+ - off
+ - identify
+ Blink the status led for ~5 seconds.
+ - reset
+ Reset consumption counters
+ - statusRequest
+ Request device status update.
+ - set extensions are supported.
+
+
+
+ Get
+
+
+
+ Readings
+
+ - power
+ - consumption
+ - consumptionTotal
+ will be created as a default user reading to have a continous consumption value that is not influenced
+ by the regualar reset or overflow of the normal consumption reading
+
+
+
+ Attributes
+
+ - readonly
+ if set to a value != 0 all switching commands (on, off, toggle, ...) will be disabled.
+ - forceOn
+ try to switch on the device whenever an off status is received.
+
+
+
+
+PHTV
+
+
+
+ Define
+
+ define <name> PHTV <ip-address-or-hostname> [<poll-interval>]
+
+
+ This module controls Philips TV devices and their Ambilight.
+ Defining a PHTV device will schedule an internal task (interval can be set
+ with optional parameter <poll-interval> in seconds, if not set, the value is 45
+ seconds), which periodically reads the status of the device and triggers notify/filelog commands.
+
+ Example:
+
+ define PhilipsTV PHTV 192.168.0.10
+
+ # With custom interval of 20 seconds
+ define PhilipsTV PHTV 192.168.0.10 20
+
+
+
+
+
+
+ Set
+
+ set <name> <command> [<parameter>]
+
+ Currently, the following commands are defined.
+
+ - on - powers on the device and send a WoL magic package if needed
+ - off - turns the device in standby mode
+ - toggle - switch between on and off
+ - channel channel,0...999,sRef - zap to specific channel or service reference
+ - channelUp - zap to next channel
+ - channelDown - zap to previous channel
+ - volume 0...100 - set the volume level in percentage
+ - volumeStraight 1...60 - set the volume level in device specific range
+ - volumeUp - increases the volume level
+ - volumeDown - decreases the volume level
+ - mute on,off,toggle - controls volume mute
+ - input ... - switches between inputs
+ - statusRequest - requests the current status of the device
+ - remoteControl UP,DOWN,... - sends remote control commands; see remoteControl help
+ - ambiHue on,off - activates/disables Ambilight+Hue function
+ - ambiMode internal,manual,expert - set source register for Ambilight
+ - ambiPreset - set Ambilight to predefined state
+ - rgb HEX,LED address - set an RGB value for Ambilight
+ - hue 0-65534 - set the color hue value Ambilight
+ - sat 0-255 - set the saturation value for Ambilight
+ - bri 0-255 - set the brightness value for Ambilight
+ - play - starts/resumes playback
+ - pause - starts/resumes playback
+ - stop - stops current playback
+ - record - starts recording of current channel
+
+
+
+
+
+
+ Advanced Ambilight Control
+
+
+ If you would like to specificly control color for individual sides or even individual LEDs, you may use special addressing to be used with set command 'rgb':
+
+ LED addressing format:
+ <Layer$gt;<Side$gt;<LED number$gt;
+
+ Examples:
+
+ # set LED 0 on left side within layer 1 to color RED
+ set PhilipsTV rgb L1L0:FF0000
+
+ # set LED 0, 2 and 4 on left side within layer 1 to color RED
+ set PhilipsTV rgb L1L0:FF0000 L1L2:FF0000 L1L4:FF0000
+
+ # set complete right side within layer 1 to color GREEN
+ set PhilipsTV rgb L1R:00FF00
+
+ # set complete layer 1 to color BLUE
+ set PhilipsTV rgb L1:0000FF
+
+
+
+
+
+
+
+
+
+
+ Advanced Ambilight+HUE Control
+
+
+ Linking to your HUE devices within attributes ambiHueLeft, ambiHueTop, ambiHueRight and ambiHueBottom uses some defaults to calculate the actual color.
+ The following settings can be fine tuned:
+
+ - LED(s) to be used as color source
+ either 1 single LED or a few in a raw like 2-4. Defaults to use the middle LED and it's left and right partners. Counter starts at 1. See readings ambiLED* for how many LED's your TV has.
+ - saturation in percent of the original value (1-99, default=100)
+ - brightness in percent of the original value (1-99, default=100)
+
+ Use the following addressing format for fine tuning:
+ devicename:<LEDs$gt;<saturation$gt;<brightness$gt;
+
+ Examples:
+
+ # to use only LED 4 from the top as source
+ attr PhilipsTV ambiHueTop HUEDevice0:4
+
+ # to use a combination of LED's 1+2 as source
+ attr PhilipsTV ambiHueTop HUEDevice0:1-2
+
+ # to use LED's 1+2 and only 90% of their saturation
+ attr PhilipsTV ambiHueTop HUEDevice0:1-2:90
+
+ # to use LED's 1+2 and only 50% of their brightness
+ attr PhilipsTV ambiHueTop HUEDevice0:1-2::50
+
+ # to use LED's 1+2, 90% saturation and 50% brightness
+ attr PhilipsTV ambiHueTop HUEDevice0:1-2:90:50
+
+ # to use default LED settings but only adjust their brightness to 50%
+ attr PhilipsTV ambiHueTop HUEDevice0:::50
+
+
+
+
+
+
+
+ Get
+
+ get <name> <what>
+
+ Currently, the following commands are defined:
+
+ channel
+ mute
+ power
+ input
+ volume
+ rgb
+
+
+
+
+
+
+ Attributes
+
+ - ambiHueLeft - HUE devices that should get the color from left Ambilight.
+ - ambiHueTop - HUE devices that should get the color from top Ambilight.
+ - ambiHueRight - HUE devices that should get the color from right Ambilight.
+ - ambiHueBottom - HUE devices that should get the color from bottom Ambilight.
+ - ambiHueLatency - Controls the update interval for HUE devices in milliseconds; defaults to 200 ms.
+ - disable - Disable polling (true/false)
+ - inputs - Presents the inputs read from device. Inputs can be renamed by adding
,NewName right after the original name.
+ - timeout - Set different polling timeout in seconds (default=7)
+
+
+
+
+
+ Generated Readings/Events:
+
+ - ambiHue - Ambilight+Hue status
+ - ambiLEDBottom - Number of LEDs of bottom Ambilight
+ - ambiLEDLayers - Number of physical LED layers
+ - ambiLEDLeft - Number of LEDs of left Ambilight
+ - ambiLEDRight - Number of LEDs of right Ambilight
+ - ambiLEDTop - Number of LEDs of top Ambilight
+ - ambiMode - current Ambilight color source
+ - channel - Shows the service name of current channel; part of FHEM-4-AV-Devices compatibility
+ - country - Set country
+ - currentMedia - The preset number of this channel; part of FHEM-4-AV-Devices compatibility
+ - frequency - Shows current channels frequency
+ - input - Shows currently used input; part of FHEM-4-AV-Devices compatibility
+ - language - Set menu language
+ - model - Device model
+ - mute - Reports the mute status of the device (can be "on" or "off")
+ - onid - The ON ID
+ - power - Reports the power status of the device (can be "on" or "off")
+ - presence - Reports the presence status of the receiver (can be "absent" or "present"). In case of an absent device, control is basically limited to turn it on again. This will only work if the device supports Wake-On-LAN packages, otherwise command "on" will have no effect.
+ - receiveMode - Receiving mode (analog or DVB)
+ - rgb - Current Ambilight color if ambiMode is not set to internal and all LEDs have the same color
+ - rgb_X - Current Ambilight color of a specific LED if ambiMode is not set to internal
+ - serialnumber - Device serial number
+ - servicename - Name for current channel
+ - sid - The S-ID
+ - state - Reports current power state and an absence of the device (can be "on", "off" or "absent")
+ - systemname - Device system name
+ - tsid - The TS ID
+ - volume - Reports current volume level of the receiver in percentage values (between 0 and 100 %)
+ - volumeStraight - Reports current volume level of the receiver in device specific range
+
+
+
+
+
+PID
+
+ The PID device is a loop controller, used to set the value e.g of a heating
+ valve dependent of the current and desired temperature.
+
+
+
+
+ Define
+
+ define <name> PID sensor[:reading:regexp] actor[:cmd:min:max] [p i d]
+
+
+ sensor[:reading:regexp] specifies the sensor, which is an
+ already defined fhem device, e.g. a S300TH temperature sensor. The reading
+ and regexp fields are necessary only for unknown devices (currently CUL_WS and HMS devices are "known").
+ Reading specifies the READINGS field of the sensor, and the regexp extracts
+ the number from this field. E.g. for the complete definition for a CUL_WS
+ device is: s300th_dev:temperature:([\d\.]*)
+
+
+ actor[:cmd:min:max] specifies the actor, which is an
+ already defined fhem device, e.g. an FHT8V valve. The cmd, min and max
+ fields are necessary only for unknown devices (currently FHT8V is "known"). cmd specifies the command name for the
+ actor, min the minimum value and max the maximum value. The complete
+ definition for an FHT8V device is:fht8v_dev:valve:0:100
+
+
+ p, i and d are the parameters use to controlling, see also the this wikipedia entry.
+ The default values are around 25.5, 3 and 5.88, you probably need to tune
+ these values. They can be also changed later.
+
+
+ Examples:
+
+ define wz_pid PID wz_th wz_fht8v
+
+
+
+
+
+ Set
+
+ - set <name> factors p i d
+ Set the p, i and d factors, as described above.
+
+ - set <name> desired <value>
+ Set the desired value (e.g. temperature). Note: until this value is not
+ set, no command is issued.
+
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+ - disable
+
+ - roundValveValue
+ round the valve value to an integer, of the attribute is set to 1.
+ The valve value is automatically rounded, if the attribtue is not set,
+ and the difference between min and max is greater than 100.
+
+
+
+
+
+
+
+
+PID20
+
+
+
+ Define
+
+
+ define <name> PID20 <sensor[:reading[:regexp]]> <actor:cmd >
+
+ This module provides a PID device, using <sensor> and <actor>
+
+
+
+
+ Set-Commands
+
+
+
+ set <name> desired <value>
+
+ Set desired value for PID
+
+
+
+ set <name> start
+
+ Start PID processing again, using frozen values from former stop.
+
+
+
+ set <name> stop
+
+ PID stops processing, freezing all values.
+
+
+
+ set <name> restart <value>
+
+ Same as start, but uses value as start value for actor
+
+
+
+
+
+
+ Get-Commands
+
+
+
+ get <name> params
+
+ Get list containing current parameters.
+
+
+
+
+
+
+ Attributes
+
+ - readingFnAttributes
+
+ - disable - disable the PID device, possible values: 0,1; default: 0
+ - pidActorValueDecPlaces - number of demicals, possible values: 0..5; default: 0
+ - pidActorInterval - number of seconds to wait between to commands sent to actor; default: 180
+ - pidActorTreshold - threshold to be reached before command will be sent to actor; default: 1
+ - pidActorErrorAction - required action on error, possible values: freeze,errorPos; default: freeze
+ - pidActorErrorPos - actor's position to be used in case of error; default: 0
+ - pidActorKeepAlive - number of seconds to force command to be sent to actor; default: 1800
+ - pidActorLimitLower - lower limit for actor; default: 0
+ - pidActorLimitUpper - upper limit for actor; default: 100
+ - pidCalcInterval - interval (seconds) to calculate new pid values; default: 60
+ - pidDeltaTreshold - if delta < delta-threshold the pid will enter idle state; default: 0
+ - pidDesiredName - reading's name for desired value; default: desired
+ - pidFactor_P - P value for PID; default: 25
+ - pidFactor_I - I value for PID; default: 0.25
+ - pidFactor_D - D value for PID; default: 0
+ - pidMeasuredName - reading's name for measured value; default: measured
+ - pidSensorTimeout - number of seconds to wait before sensor will be recognized n/a; default: 3600
+ - pidReverseAction - reverse PID operation mode, possible values: 0,1; default: 0
+ - pidUpdateInterval - number of seconds to wait before an update will be forced for plotting; default: 300
+
+
+
+
+ Generated Readings/Events:
+
+
+ - actuation - real actuation set to actor
+ - actuationCalc - internal actuation calculated without limits
+ - delta - current difference desired - measured
+ - desired - desired value
+ - measured - measured value
+ - p_p - p value of pid calculation
+ - p_i - i value of pid calculation
+ - p_d - d value of pid calculation
+ - state - current device state
+
+ Names for desired and measured readings can be changed by corresponding attributes (see above).
+
+
+
+ Additional informations
+
+
+
+
+
+PIFACE
+
+ The PIFACE module managed the Raspberry Pi extension board PiFace Digital.
+ PIFACE controls the input ports 0..7 and output ports 0..7.
+
+ - The relays 0 and 1 have corresponding output port 0 and 1.
+ - The switches 0..3 have corresponding input ports 0..3 and must be read with attr portMode<0..7> = up
+
+ The status of the ports can be displayed periodically. The update of the states via interrupt is not supported.
+ The module can be periodically monitored by a watchdog function.
+ The ports can be read and controlled individually by the function readingsProxy.
+ PIFACE is tested with the Raspbian OS.
+
+ Preparatory Work
+ The use of PIFACE module requires some preparatory work.
+
+
+ - Module needs tools from Wiring Pi. Install it with
+ git clone git://git.drogon.net/wiringPi
+ cd wiringPi
+ ./build
+
+ - PiFace Digital need the SPI pins on the Raspberry Pi to be enabled in order to function.
+ Start
sudo raspi-config , select Option 8 Advanced Options
+ and set the A5 SPI option to "Yes".
+
+ - The function of the PiFace Digital can be tested at OS command line. For example:
+ gpio -p readall
+ gpio -p read 200
+ gpio -p write 201 0 or gpio -p write 201 1
+
+ - The watchdog function monitors the input port 7 and the output port 7.
+ If the watchdog is enabled, this ports can not be used for other tasks.
+ In order to monitor the input port 7, it must be connected to the ground!
+ The OS command "shutdown" must be enable for fhem if an OS restart is to
+ be executed in case of malfunction. For example, with chmod +s /sbin/shutdown
+ or sudo chmod +s /sbin/shutdown .
+
+
+
+
+
+
+ Define
+
+
+
+ Set
+
+
+
+ set <name> <port> <value>
+
+
+ - set single port n to 1 (on) or 0 (off)
+ Examples:
+ set <name> 3 1 => set port 3 on
+ set <name> 5 0 => set port 5 off
+
+ - set all ports in one command by bitmask
+ Example:
+ set <name> all 255 => set all ports on
+ set <name> all 0 => set all ports off
+ set <name> all 170 => bitmask(170) = 10101010 => set ports 1 3 5 7 on, ports 0 2 4 6 off
+
+
+ port 76543210
+ bit 10101010
+
+
+
+
+
+
+
+ Get
+
+
+
+ get <name> <port>
+
+
+ - get state of single port
+ Example:
+ get <name> 3 => get state of port 3
+
+
+ - get state of input ports and update changed readings
+ Example:
+ get <name> in => get state of all input ports
+
+
+ - get state of out ports and update changed readings
+ Example:
+ get <name> out => get state of all output ports
+
+
+ - get state of input and out ports and update all readings
+ Example:
+ get <name> all => get state of all ports
+
+
+
+
+
+
+
+ Attributes
+
+ - defaultState last|off|0|1,
+ [defaultState] = off is default.
+ Restoration of the status of the output port after a Fhem reboot.
+
+ - disable 0|1
+ If applied set commands will not be executed.
+
+ - disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...
+ Space separated list of HH:MM tupels. If the current time is between
+ the two time specifications, set commands will not be executed. Instead of
+ HH:MM you can also specify HH or HH:MM:SS. To specify an interval
+ spawning midnight, you have to specify two intervals, e.g.:
+
+ 23:00-24:00 00:00-01:00
+
+
+ - pollInterval off|1,2,...,9,10,
+ [pollInterval] = off is default.
+ Define the polling interval of the input ports in seconds.
+
+ - portMode<0..7> tri|up,
+ [portMode<0..7>] = tri is default.
+ This enables (up) or disables (tri) the internal pull-up resistor on the given input port.
+ You need to enable the pull-up if you want to read any of the on-board switches on the PiFace board.
+
+ - readingFnAttributes
+ - watchdog off|on|silent,
+ [watchdog] = off is default.
+ The function of the PiFace extension can be monitored periodically.
+ The watchdog module checks the function of ports in7 and out7.
+ If the watchdog function is to be used, ports in7 and out7 are reserved for this purpose.
+ The port 7 must be connected to ground.
+ If [watchdog] = on, the result of which is periodically logged and written to the reading watchdog.
+ If [watchdog] = silent, FHEM is restarted after the first error detected.
+ If the error could not be eliminated, then the Raspberry operating system is restarted.
+ If the error is not corrected as well, the monitoring function is disabled and the error is logged.
+
+ - watchdogInterval 10..65535,
+ [watchdogInterval] = 60 is default.
+ Interval between two monitoring tests in seconds.
+
+
+
+
+ Generated Readings/Events:
+
+
+ - <out0..out7>: 0|1
+ state of output port 0..7
+ - <in0..in7>: 0|1
+ state of input port 0..7
+ - watchdog: off|ok|error|restart|start
+ state of the watchdog function
+ - state: active|error
+
+
+
+
+
+POKEYS
+
+ The POKEYS module is used to control the LAN POKEYS device (POKEYS56e) which supports
+ up to 56 digital input, analog inputs, counter inputs and digital outputs.
+ Each port/pin has to be configured before it can be used.
+
+
+
+
+ Define
+
+ define <name> POKEYS <ip-address> <pin> <io-state> [<time in ms>]
+
+ <ip-address> the IP address where the POKEYS device can be accessed
+ <pin> the pin number which should be configured
+ <io-state> the new io state of the pin Obsolete(=undef) DigIn DigOut AdcIn DigInCtRise DigInCtFall ExtDigOut GetBasic
+ <time in ms> optional else 1000ms: cyclic update time for Input pin
+
+
+ Example:
+
+ define PoInfo POKEYS 192.168.178.34 0 GetBasic
+ # creates a virtual pin for getting infos about the device with the get command
+ define Pin44in POKEYS 192.168.178.34 44 DigIn 200
+ # creates a digitial input port on pin 44
+ define Pin25out POKEYS 192.168.178.34 25 DigOut
+ # creates a digial output port on pin 25
+
+
+
+
+ Set
+
+ set <name> <state> [<time in ms>]
+
+ <state> can be OFF ON OFF_PULSE ON_PULSE
+ <time in ms> optional else 1000ms hold time for the ON_PULSE OFF_PULSE state
+
+ Example:
+
+ set Pin25out ON
+ # sets Pin25out to ON (0V)
+
+
+
+
+ Get
+
+ get <name> <type>
+
+ only supported for pins of type GetBasic
+ <type> can be Version DevName Serial User CPUload
+
+ Example:
+
+ get PoInfo Version
+ # gets the version of the POKEYS device
+
+
+
+
+ Attributes
+
+
+
+
+
+PRESENCE
+
+
+ The PRESENCE module provides several possibilities to check the presence of mobile phones or similar mobile devices such as tablets.
+
+ This module provides several operational modes to serve your needs. These are:
+
+ - lan-ping - A presence check of a device via network ping in your LAN/WLAN
+ - fritzbox - A presence check by requesting the device state from the FritzBox internals (only available when running FHEM on a FritzBox!)
+ - local-bluetooth - A presence check by searching directly for a given bluetooth device nearby
+ - function - A presence check by using your own perl function which returns a presence state
+ - shellscript - A presence check by using an self-written script or binary which returns a presence state
+ - lan-bluetooth - A presence check of a bluetooth device via LAN network by connecting to a presenced or collectord instance
+
+
+ Each mode can be optionally configured with a specific check interval and a present check interval.
+
+ - check-interval - The interval in seconds between each presence check. Default value: 30 seconds
+ - present-check-interval - The interval in seconds between each presence check in case the device is present. Otherwise the normal check-interval will be used.
+
+
+
+ Define
+ Mode: lan-ping
+ define <name> PRESENCE lan-ping <ip-address> [ <check-interval> [ <present-check-interval> ] ]
+
+ Checks for a network device via PING requests and reports its presence state.
+ Example
+ define iPhone PRESENCE lan-ping 192.168.179.21
+
+ Mode: fritzbox
+ define <name> PRESENCE fritzbox <device-name> [ <check-interval> [ <present-check-interval> ] ]
+
+ Checks for a network device by requesting the internal state on a FritzBox via ctlmgr_ctl. The device-name must be the same as shown in the network overview of the FritzBox
+ This check is only applicaple when FHEM is running on a FritzBox!
+ Example
+ define iPhone PRESENCE fritzbox iPhone-4S
+ Mode: local-bluetooth
+ define <name> PRESENCE local-bluetooth <bluetooth-address> [ <check-interval> [ <present-check-interval> ] ]
+
+ Checks for a bluetooth device and reports its presence state. For this mode the shell command "hcitool" is required (provided with a bluez installation under Debian via APT), as well
+ as a functional bluetooth device directly attached to your machine.
+ Example
+ define iPhone PRESENCE local-bluetooth 0a:8d:4f:51:3c:8f
+ Mode: function
+ define <name> PRESENCE function {...} [ <check-interval> [ <present-check-interval> ] ]
+
+ Checks for a presence state via perl-code. You can use a self-written perl function to obtain the presence state of a specific device (e.g. via SNMP check).
+ The function must return 0 (absent) or 1 (present). An example can be found in the FHEM-Wiki.
+ Example
+ define iPhone PRESENCE function {snmpCheck("10.0.1.1","0x44d77429f35c")}
+ Mode: shellscript
+ define <name> PRESENCE shellscript "<path> [<arg1>] [<argN>]..." [ <check-interval> [ <present-check-interval> ] ]
+
+ Checks for a presence state via shell script. You can use a self-written script or binary in any language to obtain the presence state of a specific device (e.g. via SNMP check).
+ The shell must return 0 (absent) or 1 (present) on console (STDOUT). Any other values will be treated as an error
+ Example
+ define iPhone PRESENCE shellscript "/opt/check_device.sh iPhone"
+ Mode: lan-bluetooth
+ Checks for a bluetooth device with the help of presenced or collectord. They can be installed where-ever you like, just must be accessible via network.
+ The given device will be checked for presence status.
+
+ define <name> PRESENCE lan-bluetooth <bluetooth-address> <ip-address>[:port] [ <check-interval> ]
+
+ The default port is 5111 (presenced). Alternatly you can use port 5222 (collectord)
+
+ Example
+ define iPhone PRESENCE lan-bluetooth 0a:4f:36:d8:f9:89 127.0.0.1:5222
+ presenced
+ The presence is a perl network daemon, which provides presence checks of multiple bluetooth devices over network.
+ It listens on TCP port 5111 for incoming connections from a FHEM PRESENCE instance or a running 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
+
+
+ It uses the hcitool command (provided by a bluez installation)
+ to make a paging request to the given bluetooth address (like 01:B4:5E:AD:F6:D3). The devices must not be visible, but
+ still activated to receive bluetooth requests.
+
+ If a device is present, this is send to FHEM, as well as the device name as reading.
+
+ The presenced is available as:
+
+
+ collectord
+
+ The collectord is a perl network daemon, which handles connections to several presenced installations to search for multiple bluetooth devices over network.
+
+ It listens on TCP port 5222 for incoming connections from a FHEM presence instance.
+
+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
+
+ Before the collectord can be used, it needs a config file, where all different rooms, which have a presenced detector, will be listed. This config file looks like:
+
+
+ # 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)
+ presence_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
+ presence_timeout=180
+ absence_timeout=20
+
+
+ If a device is present in any of the configured rooms, this is send to FHEM, as well as the device name as reading and the room which has detected the device.
+
+ The collectord is available as:
+
+
+
+
+
+
+
+ Set
+
+ - statusRequest - Schedules an immediatly check.
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+ - do_not_notify
+ - readingFnAttributes
+ - disable
+ If this attribute is activated, an active check will be disabled.
+ Possible values: 0 => not disabled , 1 => disabled
+ Default Value is 0 (not disabled)
+ - ping_count
(Only in Mode "ping" on non-Windows machines applicable)
+ Changes the count of the used ping packets to recognize a present state. Depending on your network performance sometimes a packet can be lost or blocked.
+ Default Value is 4 (packets)
+ - fritzbox_repeater
(Only in Mode "fritzbox" applicable)
+ If your FritzBox is part of a network using repeaters, than this attribute needs to be enabled to ensure a correct recognition for devices, which are connected via repeater.
+
+ This attribute is also needed, if your network device has no speed information on the FritzBox website (Home Network).
+ BE AWARE: The recognition of device going absent in a repeated network can take about 15 - 20 minutes!!
+
+ Possible values: 0 => Use default recognition, 1 => Use repeater-supported recognition
+ Default Value is 0 (Use default recognition)
+
+
+
+
+
+
+ Generated Events:
+
+ General Events:
+
+ - state: $state (absent|present|disabled) - The state of the device or "disabled" when the disable attribute is enabled
+
+ Bluetooth specific events:
+
+ - device_name: $name - The name of the Bluetooth device in case it's present
+
+ presenced/collectord specific events:
+
+ - command_accepted: $command_accepted (yes|no) - Was the last command acknowleged and accepted by the presenced or collectord?
+ - room: $room - If the module is connected with a collector daemon this event shows the room, where the device is located (as defined in the collectord config file)
+
+
+
+
+
+
+PachLog
+
+ The PachLog-Module Logs SensorData like (temperature and humidity) to www.pachube.com.
+
+ Note: this module needs the HTTP::Request and LWP::UserAgent perl modules.
+
+
+ Define
+
+
define <name> PachLog <Pachube-API-Key>
+
+ <Pachube-API-Key>:
+ The Pachube-API-Key however is what you need in your code to authenticate your application's access the Pachube service.
+ Don't share this with anyone: it's just like any other password.
+ www.pachube.com
+
+
+
+
+
+ Set
+
+
+ Add a new Device for Logging to www.pachube.com
+ set <NAME> ADD <FHEM-DEVICENAME> FEED-NR:ID:READING:ID:READING
+ Example: KS300-Weather-Data
+ READINGS: temperature humidity wind rain
+ 1. Generate Input-Feed on www.pachube.com => Yout get your FEED-NR: 1234
+ 2. Add Datastreams to the Feed:
+
+
+ ID | 0 | temperature |
+ ID | 1 | humidity |
+ ID | 2 | wind |
+ ID | 3 | rain |
+
+ 3. Add the KS300 to your PachLog-Device
+ set <NAME> ADD <My-KS300> 1234:0temperature:1:humidity:2:wind:3:rain
+ Delete a Device form Logging to www.pachube.com
+ set <NAME> DEL <FHEM-DEVICENAME>
+
+
+
+
+ Get
+
+
+ Attributes
+
+ - do_not_notify
+ - disable
+ Disables PachLog.
+ Nor more Logging to www.pachube.com
+
+
+
+
+
+
+
+Pushover
+
+ Pushover is a service to receive instant push notifications on your
+ phone or tablet from a variety of sources.
+ You need an account to use this module.
+ For further information about the service see pushover.net.
+
+ Discuss the module here.
+
+
+
+ Define
+
+ define <name> Pushover <token> <user>
+
+ You have to create an account to get the user key.
+ And you have to create an application to get the API token.
+
+ Example:
+
+ define Pushover1 Pushover 01234 56789
+
+
+
+
+ Set
+
+ set <name> msg <title> <msg> <device> <priority> <sound> [<retry> <expire>]
+
+
+ Examples:
+
+ set Pushover1 msg 'Titel' 'This is a text.' '' 0 ''
+ set Pushover1 msg 'Emergency' 'Security issue in living room.' '' 2 'siren' 30 3600
+
+
+ Notes:
+
+ - If device is empty, the message will be sent to all devices.
+
+ - If sound is empty, the default setting in the app will be used.
+
+ - If priority is higher or equal 2, retry and expire must be defined.
+
+ - For further documentation of these parameters have a look at the Pushover API.
+
+
+
+
+ Get
+
+ Attributes
+
+
+ - timestamp
+ Send the unix timestamp with each message.
+
+
+
+
+ Generated events:
+
+
+
+
+
+
+
+ RESIDENTS
+
+
+ Define
+
+ define <rgr_ResidentsName> RESIDENTS
+
+ Provides a special dummy device to represent a group of individuals living at your home.
+ It locically combines individual states of ROOMMATE and GUEST devices and allows state changes for all members.
+ Based on the current state and other readings, you may trigger other actions within FHEM.
+
+ Example:
+
+ # Standalone
+ define rgr_Residents RESIDENTS
+
+
+
+ Set
+
+ set <rgr_ResidentsName> <command> [<parameter>]
+
+ Currently, the following commands are defined.
+
+ -
+ addGuest - creates a new GUEST device and adds it to the current RESIDENTS group. Just enter the dummy name and there you go.
+
+ -
+ addRoommate - creates a new ROOMMATE device and adds it to the current RESIDENTS group. Just enter the first name and there you go.
+
+ -
+ removeGuest - shows all GUEST members and allows to delete their dummy devices easily.
+
+ -
+ removeRoommate - shows all ROOMMATE members and allows to delete their dummy devices easily.
+
+ -
+ state home,gotosleep,asleep,awoken,absent,gone switch between states for all group members at once; see attribute rgr_states to adjust list shown in FHEMWEB
+
+
+
+
+
+ Possible states and their meaning
+
+
+ This module differs between 7 states:
+
+
+ -
+ home - residents are present at home and at least one of them is not asleep
+
+ -
+ gotosleep - present residents are on their way to bed (if they are not asleep already)
+
+ -
+ asleep - all present residents are currently sleeping
+
+ -
+ awoken - at least one resident just woke up from sleep
+
+ -
+ absent - no resident is currently at home but at least one will be back shortly
+
+ -
+ gone - all residents left home for longer period
+
+ -
+ none - no active member
+
+
+
+ Note: State 'none' cannot explicitly be set. Setting state to 'gone' will be handled as 'none' for GUEST member devices.
+
+
+
+ Attributes
+
+
+ -
+ rgr_showAllStates - states 'asleep' and 'awoken' are hidden by default to allow simple gotosleep process via devStateIcon; defaults to 0
+
+ -
+ rgr_states - list of states to be shown in FHEMWEB; separate entries by comma only and do NOT use spaces; unsupported states will lead to errors though
+
+
+
+
+
+ Generated Readings/Events:
+
+
+ -
+ lastActivity - the last state change of one of the group members
+
+ -
+ lastActivityBy - the realname of the last group member with changed state
+
+ -
+ lastArrival - timestamp of last arrival at home
+
+ -
+ lastAwake - timestamp of last sleep cycle end
+
+ -
+ lastDeparture - timestamp of last departure from home
+
+ -
+ lastDurAbsence - duration of last absence from home in following format: hours:minutes:seconds
+
+ -
+ lastDurPresence - duration of last presence at home in following format: hours:minutes:seconds
+
+ -
+ lastDurSleep - duration of last sleep in following format: hours:minutes:seconds
+
+ -
+ lastSleep - timestamp of last sleep cycle begin
+
+ -
+ lastState - the prior state
+
+ -
+ presence - reflects the home presence state, depending on value of reading 'state' (can be 'present' or 'absent')
+
+ -
+ residentsAbsent - number of residents with state 'absent'
+
+ -
+ residentsAsleep - number of residents with state 'asleep'
+
+ -
+ residentsAwoken - number of residents with state 'awoken'
+
+ -
+ residentsGone - number of residents with state 'gone'
+
+ -
+ residentsGotosleep - number of residents with state 'gotosleep'
+
+ -
+ residentsGuests - number of active guests who are currently treated as part of the residents scope
+
+ -
+ residentsHome - number of residents with state 'home'
+
+ -
+ residentsTotal - total number of all active residents despite their current state
+
+ -
+ residentsTotalAbsent - number of all residents who are currently underway
+
+ -
+ residentsTotalPresent - number of all residents who are currently at home
+
+ -
+ residentsTotalWayhome - number of all active residents who are currently on their way back home
+
+ -
+ state - reflects the current state
+
+
+
+
+
+
+RFXCOM
+
+
+
+ This module is for the old RFXCOM USB or LAN based 433 Mhz RF receivers and transmitters (order order code 80002 and others). It does not support the new RFXtrx433 transmitter because it uses a different protocol. See RFXTRX for support of the RFXtrx433 transmitter.
+These receivers supports many protocols like Oregon Scientific weather sensors, RFXMeter devices, X10 security and lighting devices and others.
+ Currently the following parser modules are implemented:
+
+ - 41_OREGON.pm (see device OREGON): Process messages Oregon Scientific weather sensors.
+ See http://www.rfxcom.com/oregon.htm of
+ Oregon Scientific weather sensors that could be received by the RFXCOM receivers.
+ Until now the following Oregon Scientific weather sensors have been tested successfully: BTHR918, BTHR918N, PCR800, RGR918, THGR228N, THGR810, THR128, THWR288A, WTGR800, WGR918. It will probably work with many other Oregon sensors supported by RFXCOM receivers. Please give feedback if you use other sensors.
+
+ - 42_RFXMETER.pm (see device RFXMETER): Process RFXCOM RFXMeter devices. See http://www.rfxcom.com/sensors.htm.
+ - 43_RFXX10REC.pm (see device RFXX10REC): Process X10 security and X10 lighting devices.
+
+
+ Note: this module requires the Device::SerialPort or Win32::SerialPort module
+ if the devices is connected via USB or a serial port.
+
+
+ Define
+
+ define <name> RFXCOM <device> [noinit]
+
+
+ USB-connected (80002):
+ <device> specifies the USB port to communicate with the RFXCOM receiver.
+ Normally on Linux the device will be named /dev/ttyUSBx, where x is a number.
+ For example /dev/ttyUSB0.
+
+ Example:
+ define RFXCOMUSB RFXCOM /dev/ttyUSB0
+
+
+
+ Network-connected devices:
+
+ <device> specifies the host:port of the device. E.g.
+ 192.168.1.5:10001
+
+
+ noninit is optional and issues that the RFXCOM device should not be
+ initialized. This is useful if you share a RFXCOM device. It is also useful
+ for testing to simulate a RFXCOM receiver via netcat or via FHEM2FHEM.
+
+
+ Example:
+ define RFXCOMTCP RFXCOM 192.168.1.5:10001
+
+ define RFXCOMTCP2 RFXCOM 192.168.1.121:10001 noinit
+
+
+
+ |
+
+ - dummy
+ - longids
+ Comma separated list of device-types for RFXCOM that should be handled using long IDs. This additional ID is a one byte hex string and is generated by the Oregon sensor when is it powered on. The value seems to be randomly generated. This has the advantage that you may use more than one Oregon sensor of the same type even if it has no switch to set a sensor id. For example the author uses two BTHR918N sensors at the same time. All have different deviceids. The drawback is that the deviceid changes after changing batteries. All devices listed as longids will get an additional one byte hex string appended to the device name.
+Default is to use long IDs for all devices.
+
+ Examples:
+# Do not use any long IDs for any devices:
+attr RFXCOMUSB longids 0
+# Use any long IDs for all devices (this is default):
+attr RFXCOMUSB longids 1
+# Use longids for BTHR918N devices.
+# Will generate devices names like BTHR918N_f3.
+attr RFXCOMUSB longids BTHR918N
+# Use longids for TX3_T and TX3_H devices.
+# Will generate devices names like TX3_T_07, TX3_T_01 ,TX3_H_07.
+attr RFXCOMUSB longids TX3_T,TX3_H
+
+
+
+
+
+RFXMETER
+
+ The RFXMETER module interprets RFXCOM RFXMeter messages received by a RFXCOM receiver. You need to define an RFXCOM receiver first.
+ See the RFXCOM.
+
+
+
+
+ Define
+
+ define <name> RFXMETER <deviceid> [<scalefactor>] [<unitname>]
+
+ <deviceid> is the device identifier of the RFXMeter sensor and is a one byte hexstring (00-ff).
+
+ <scalefactor> is an optional scaling factor. It is multiplied to the value that is received from the RFXmeter sensor.
+
+ <unitname> is an optional string that describes the value units. It is added to the Reading generated to describe the values.
+
+ Example:
+ define RFXWater RFXMETER 00 0.5 ltr
+
+ define RFXPower RFXMETER 01 0.001 kwh
+
+ define RFXGas RFXMETER 02 0.01 cu_m
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+RFXX10REC
+
+ The RFXX10REC module interprets X10 security and X10 lighting messages received by a RFXCOM RF receiver. Reported also to work with KlikAanKlikUit. You need to define an RFXCOM receiver first.
+ See RFXCOM.
+
+
+
+
+ Define
+
+ define <name> RFXX10REC <type> <deviceid> <devicelog> [<deviceid> <devicelog>]
+
+ <type>
+
+ specifies the type of the X10 device:
+ X10 security devices:
+
+ -
ds10a (X10 security ds10a Door/Window Sensor or compatible devices. This device type reports the status of the switch [Open/Closed], status of the delay switch [min|max]], and battery status [ok|low].)
+ -
ms10a (X10 security ms10a motion sensor. This device type reports the status of motion sensor [normal|alert] and battery status [ok|low].))
+ -
sd90 (Marmitek sd90 smoke detector. This device type reports the status of the smoke detector [normal|alert] and battery status [ok|low].)
+ -
kr18 (X10 security remote control. Report the Reading "Security" with values [Arm|Disarm], "ButtonA" and "ButtonB" with values [on|off] )
+
+ X10 lighting devices:
+
+ -
ms14a (X10 motion sensor. Reports [normal|alert] on the first deviceid (motion sensor) and [on|off] for the second deviceid (light sensor))
+ -
x10 (All other x10 devices. Report [on|off] on both deviceids.)
+
+
+
+ <deviceid>
+
+ specifies the first device id of the device. X10 security have a a 16-Bit device id which has to be written as a hex-string (example "5a54").
+ A X10 lighting device has a house code A..P followed by a unitcode 1..16 (example "B1").
+
+
+ <devicelog>
+
+ is the name of the Reading used to report. Suggested: "Window" or "Door" for ds10a, "motion" for motion sensors, "Smoke" for sd90.
+
+
+ <deviceid2>
+
+ is optional and specifies the second device id of the device if it exists. For example sd90 smoke sensors can be configured to report two device ids. ms14a motion sensors report motion status on the first deviceid and the status of the light sensor on the second deviceid.
+
+
+ <devicelog2>
+
+ is optional for the name used for the Reading of <deviceid2> .
+
+
+ Example:
+ define livingroom_window RFXX10REC ds10a 72cd Window
+
+ define motion_sensor1 RFXX10REC ms10a 55c6 motion
+
+ define smoke_sensor1 RFXX10REC sd90 54d3 Smoke 54d3 Smoketest
+
+ define motion_sensor2 RFXX10REC ms14a A1 motion A2 light
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+
+
+ ROOMMATE
+
+
+ Define
+
+ define <rr_FirstName> ROOMMATE [<device name of resident group>]
+
+ Provides a special dummy device to represent a resident of your home.
+ Based on the current state and other readings, you may trigger other actions within FHEM.
+
+ Used by superior module RESIDENTS but may also be used stand-alone.
+
+ Example:
+
+ # Standalone
+ define rr_Manfred ROOMMATE
+
+ # Typical group member
+ define rr_Manfred ROOMMATE rgr_Residents # to be member of resident group rgr_Residents
+
+ # Member of multiple groups
+ define rr_Manfred ROOMMATE rgr_Residents,rgr_Parents # to be member of resident group rgr_Residents and rgr_Parents
+
+ # Complex family structure
+ define rr_Manfred ROOMMATE rgr_Residents,rgr_Parents # Parent
+ define rr_Lisa ROOMMATE rgr_Residents,rgr_Parents # Parent
+ define rr_Rick ROOMMATE rgr_Residents,rgr_Children # Child1
+ define rr_Alex ROOMMATE rgr_Residents,rgr_Children # Child2
+
+
+
+ Please note the RESIDENTS group device needs to be existing before a ROOMMATE device can become a member of it.
+
+
+
+ Set
+
+ set <rr_FirstName> <command> [<parameter>]
+
+ Currently, the following commands are defined.
+
+ -
+ location - sets reading 'location'; see attribute rr_locations to adjust list shown in FHEMWEB
+
+ -
+ mood - sets reading 'mood'; see attribute rr_moods to adjust list shown in FHEMWEB
+
+ -
+ state home,gotosleep,asleep,awoken,absent,gone switch between states; see attribute rr_states to adjust list shown in FHEMWEB
+
+
+
+
+
+ Possible states and their meaning
+
+
+ This module differs between 6 states:
+
+
+ -
+ home - individual is present at home and awake
+
+ -
+ gotosleep - individual is on it's way to bed
+
+ -
+ asleep - individual is currently sleeping
+
+ -
+ awoken - individual just woke up from sleep
+
+ -
+ absent - individual is not present at home but will be back shortly
+
+ -
+ gone - individual is away from home for longer period
+
+
+
+
+
+
+ Presence correlation to location
+
+
+ Under specific circumstances, changing state will automatically change reading 'location' as well.
+
+ Whenever presence state changes from 'absent' to 'present', the location is set to 'home'. If attribute rr_locationHome was defined, first location from it will be used as home location.
+
+ Whenever presence state changes from 'present' to 'absent', the location is set to 'underway'. If attribute rr_locationUnderway was defined, first location from it will be used as underway location.
+
+
+
+
+ Auto Gone
+
+
+ Whenever an individual is set to 'absent', a trigger is started to automatically change state to 'gone' after a specific timeframe.
+ Default value is 36 hours.
+
+ This behaviour can be customized by attribute rr_autoGoneAfter.
+
+
+
+
+ Synchronizing presence with other ROOMMATE or GUEST devices
+
+
+ If you always leave or arrive at your house together with other roommates or guests, you may enable a synchronization of your presence state for certain individuals.
+ By setting attribute rr_passPresenceTo, those individuals will follow your presence state changes to 'home', 'absent' or 'gone' as you do them with your own device.
+
+ Please note that individuals with current state 'gone' or 'none' (in case of guests) will not be touched.
+
+
+
+
+ Location correlation to state
+
+
+ Under specific circumstances, changing location will have an effect on the actual state as well.
+
+ Whenever location is set to 'home', the state is set to 'home' if prior presence state was 'absent'. If attribute rr_locationHome was defined, all of those locations will trigger state change to 'home' as well.
+
+ Whenever location is set to 'underway', the state is set to 'absent' if prior presence state was 'present'. If attribute rr_locationUnderway was defined, all of those locations will trigger state change to 'absent' as well. Those locations won't appear in reading 'lastLocation'.
+
+ Whenever location is set to 'wayhome', the reading 'wayhome' is set to '1' if current presence state is 'absent'. If attribute rr_locationWayhome was defined, LEAVING one of those locations will set reading 'wayhome' to '1' as well. So you actually have implicit and explicit options to trigger wayhome.
+ Arriving at home will reset the value of 'wayhome' to '0'.
+
+ If you are using the GEOFANCY module, you can easily have your location updated with GEOFANCY events by defining a simple NOTIFY-trigger like this:
+
+ define n_rr_Manfred.location notify geofancy:currLoc_Manfred.* set rr_Manfred location $EVTPART1
+
+ By defining geofencing zones called 'home' and 'wayhome' in the iOS app, you automatically get all the features of automatic state changes described above.
+
+
+
+ Attributes
+
+
+ -
+ rr_autoGoneAfter - hours after which state should be auto-set to 'gone' when current state is 'absent'; defaults to 36 hours
+
+ -
+ rr_locationHome - locations matching these will be treated as being at home; first entry reflects default value to be used with state correlation; separate entries by space; defaults to 'home'
+
+ -
+ rr_locationUnderway - locations matching these will be treated as being underway; first entry reflects default value to be used with state correlation; separate entries by comma or space; defaults to "underway"
+
+ -
+ rr_locationWayhome - leaving a location matching these will set reading wayhome to 1; separate entries by space; defaults to "wayhome"
+
+ -
+ rr_locations - list of locations to be shown in FHEMWEB; separate entries by comma only and do NOT use spaces
+
+ -
+ rr_moodDefault - the mood that should be set after arriving at home or changing state from awoken to home
+
+ -
+ rr_moodSleepy - the mood that should be set if state was changed to gotosleep or awoken
+
+ -
+ rr_moods - list of moods to be shown in FHEMWEB; separate entries by comma only and do NOT use spaces
+
+ -
+ rr_passPresenceTo - synchronize presence state with other ROOMMATE or GUEST devices; separte devices by space
+
+ -
+ rr_realname - whenever ROOMMATE wants to use the realname it uses the value of attribute alias or group; defaults to group
+
+ -
+ rr_showAllStates - states 'asleep' and 'awoken' are hidden by default to allow simple gotosleep process via devStateIcon; defaults to 0
+
+ -
+ rr_states - list of states to be shown in FHEMWEB; separate entries by comma only and do NOT use spaces; unsupported states will lead to errors though
+
+
+
+
+
+ Generated Readings/Events:
+
+
+ -
+ durTimerAbsence - timer to show the duration of absence from home in minutes
+
+ -
+ durTimerPresence - timer to show the duration of presence at home in minutes
+
+ -
+ durTimerSleep - timer to show the duration of sleep in minutes
+
+ -
+ lastArrival - timestamp of last arrival at home
+
+ -
+ lastAwake - timestamp of last sleep cycle end
+
+ -
+ lastDeparture - timestamp of last departure from home
+
+ -
+ lastDurAbsence - duration of last absence from home in following format: hours:minutes:seconds
+
+ -
+ lastDurPresence - duration of last presence at home in following format: hours:minutes:seconds
+
+ -
+ lastDurSleep - duration of last sleep in following format: hours:minutes:seconds
+
+ -
+ lastLocation - the prior location
+
+ -
+ lastMood - the prior mood
+
+ -
+ lastSleep - timestamp of last sleep cycle begin
+
+ -
+ lastState - the prior state
+
+ -
+ location - the current location
+
+ -
+ presence - reflects the home presence state, depending on value of reading 'state' (can be 'present' or 'absent')
+
+ -
+ mood - the current mood
+
+ -
+ state - reflects the current state
+
+ -
+ wayhome - depending on current location, it can become '1' if individual is on his/her way back home
+
+
+
+
+
+
+RPII2C
+
+
+ Provides access to Raspberry Pi's I2C interfaces for some logical modules and also directly.
+ This modul will basically work on every linux system that provides /dev/i2c-x .
+
+ preliminary:
+
+ -
+ This module uses gpio utility from WiringPi library change access rights of I2C-Interface
+ WiringPi installation is described here: RPI_GPIO
+ Alternatively for other systems (BeagleBone, etc.) you can manually change access rights for /dev/i2c-x . You will need write-/read access for user that runs FHEM. This can be doen e.g. in etc/init.d/fhem
+
+
+ -
+ installation of i2c dependencies:
+ sudo apt-get install libi2c-dev i2c-tools build-essential
+
+ -
+ load I2C kernel modules:
+ open /etc/modules
+ sudo nano /etc/modules
+ add theese lines
+
+ i2c-dev
+ i2c-bcm2708
+
+
+ -
+ To access the I2C-Bus the Device::SMBus module is necessary:
+ sudo apt-get install libmoose-perl
+ sudo cpan Device::SMBus
+
+
+
+ Define
+
+ define <name> RPII2C <I2C Bus Number>
+ where <I2C Bus Number> is the number of the I2C bus that should be used (0 or 1)
+
+
+
+ Set
+
+ -
+ Write one byte (or more bytes sequentially) directly to an I2C device (for devices that have only one register to write):
+ set <name> writeByte <I2C Address> <value>
+
+ -
+ Write one byte (or more bytes sequentially) to the specified register of an I2C device:
+ set <name> writeByteReg <I2C Address> <Register Address> <value>
+
+ -
+ Write n-bytes to an register range, beginning at the specified register:
+ set <name> writeBlock <I2C Address> <Register Address> <value>
+
+ -
+ Same as writeBlock but writes register range sequentially. The numbers of byte to write must be a multipe of the number of register.
+
set <name> writeNBlock <I2C Address> <Register Address> <number of registers> <value>
+
+ Examples:
+
+ Write 0xAA to device with I2C address 0x60
+ set test1 writeByte 60 AA
+ Write 0xAA to register 0x01 of device with I2C address 0x6E
+ set test1 writeByteReg 6E 01 AA
+ Write 0xAA to register 0x01 of device with I2C address 0x6E, after it write 0x55 to 0x02 as two separate commands
+ set test1 writeByteReg 6E 01 AA 55
+ Write 0xA4 to register 0x03, 0x00 to register 0x04 and 0xDA to register 0x05 of device with I2C address 0x60 as an block command
+ set test1 writeBlock 60 03 A4 00 DA
+
+
+
+
+
+ Get
+
+ get <name> read <I2C Address> [<Register Address> [<number of registers>]]
+
+ gets value of I2C device's registers
+ Examples:
+
+ Reads byte from device with I2C address 0x60
+ get test1 writeByte 60
+ Reads register 0x01 of device with I2C address 0x6E.
+ get test1 read 6E 01 AA 55
+ Reads register 0x03 to 0x06 of device with I2C address 0x60.
+ get test1 read 60 03 4
+
+
+
+
+ Attributes
+
+
+
+
+
+RPI_GPIO
+
+
+
+ Raspberry Pi offers direct access to several GPIO via header P1 (and P5 on V2). The Pinout is shown in table under define.
+ With this module you are able to access these GPIO's directly as output or input. For input you can use either polling or interrupt mode
+ Warning: Never apply any external voltage to an output configured pin! GPIO's internal logic operate with 3,3V. Don't exceed this Voltage!
+
+ preliminary:
+ GPIO Pins accessed by sysfs. The files are located in folder /system/class/gpio which can be only accessed by root.
+ This module uses gpio utility from WiringPi library to export and change access rights of GPIO's
+ Install WiringPi:
+
+ sudo apt-get update
+ sudo apt-get upgrade
+ sudo apt-get install git-core
+ git clone git://git.drogon.net/wiringPi
+ cd wiringPi
+ ./build
+ sudo adduser fhem gpio
+ Thats all
+
+
+ Define
+
+ define RPI_GPIO <GPIO number>
+ all usable GPIO number are in the following tables
+
+
+
+ PCB Revision 1 P1 pin header
+
+ Function | Pin | | Pin | Function |
+ 3,3V | 1 | | 2 | 5V |
+ GPIO 0 (SDA0) | 3 | | 4 | |
+ GPIO 1 (SCL0) | 5 | | 6 | GND |
+ GPIO 4 (GPCLK0) | 7 | | 8 | GPIO 14 (TxD) |
+ | 9 | | 10 | GPIO 15 (RxD) |
+ GPIO 17 | 11 | | 12 | GPIO 18 (PCM_CLK) |
+ GPIO 21 | 13 | | 14 | |
+ GPIO 22 | 15 | | 16 | GPIO 23 |
+ | 17 | | 18 | GPIO 24 |
+ GPIO 10 (MOSI) | 19 | | 20 | |
+ GPIO 9 (MISO) | 21 | | 22 | GPIO 25 |
+ GPIO 11 (SCLK) | 23 | | 24 | GPIO 8 (CE0) |
+ | 25 | | 26 | GPIO 7 (CE1) |
+ |
+
+ PCB Revision 2 P1 pin header
+
+ Function | Pin | | Pin | Function |
+ 3,3V | 1 | | 2 | 5V |
+ GPIO 2 (SDA1) | 3 | | 4 | |
+ GPIO 3 (SCL1) | 5 | | 6 | GND |
+ GPIO 4 (GPCLK0) | 7 | | 8 | GPIO 14 (TxD) |
+ | 9 | | 10 | GPIO 15 (RxD) |
+ GPIO 17 | 11 | | 12 | GPIO 18 (PCM_CLK) |
+ GPIO 27 | 13 | | 14 | |
+ GPIO 22 | 15 | | 16 | GPIO 23 |
+ | 17 | | 18 | GPIO 24 |
+ GPIO 10 (MOSI) | 19 | | 20 | |
+ GPIO 9 (MISO) | 21 | | 22 | GPIO 25 |
+ GPIO 11 (SCLK) | 23 | | 24 | GPIO 8 (CE0) |
+ | 25 | | 26 | GPIO 7 (CE1) |
+ |
+
+ PCB Revision 2 P5 pin header
+
+ Function | Pin | | Pin | Function |
+ 5V | 1 | | 2 | 3,3V |
+ GPIO 28 (SDA0) | 3 | | 4 | GPIO 29 (SCL0) |
+ GPIO 30 | 5 | | 6 | GPOI 31 |
+ GND | 7 | | 8 | GND |
+ |
+
+
+ Examples:
+
+ define Pin12 RPI_GPIO 18
+ attr Pin12
+ attr Pin12 poll_interval 5
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+ - for output configured GPIO
+
+ The set extensions are also supported.
+
+ - for input configured GPIO
+
+ readval refreshes the reading Pinlevel and, if attr toggletostate not set, the state value
+
+
+ Examples:
+
+ set Pin12 off
+ set Pin11,Pin12 on
+
+
+
+
+ Get
+
+ get <name>
+
+ returns "high" or "low" regarding the actual status of the pin and writes this value to reading Pinlevel
+
+
+
+ Attributes
+
+ - direction
+ Sets the GPIO direction to input or output.
+ Default: input, valid values: input, output
+
+ - interrupt
+ can only be used with GPIO configured as input
+ enables edge detection for GPIO pin
+ on each interrupt event readings Pinlevel and state will be updated
+ Default: none, valid values: none, falling, rising, both
+ For "both" the reading Longpress will be added and set to on as long as kes hold down longer than 1s
+ For "falling" and "rising" the reading Toggle will be added an will be toggled at every interrupt and the reading Counter that increments at every interrupt
+
+ - poll_interval
+ Set the polling interval in minutes to query the GPIO's level
+ Default: -, valid values: decimal number
+
+ - toggletostate
+ works with interrupt set to falling or rising only
+ if yes, state will be toggled at each interrupt event
+ Default: no, valid values: yes, no
+
+ - pud_resistor
+ Sets the internal pullup/pulldown resistor
+ Default: -, valid values: off, up, down
+
+ - debounce_in_ms
+ readout of pin value x ms after an interrupt occured. Can be used for switch debouncing
+ Default: 0, valid values: decimal number
+
+ - restoreOnStartup
+ Restore Readings and sets after reboot
+ Default: on, valid values: on, off
+
+ - longpressinterval
+ works with interrupt set to both only
+ time in seconds, a port need to be high to set reading longpress to on
+ Default: 1, valid values: 0.1 - 10
+
+ - readingFnAttributes
+
+
+
+
+
+
+RSS
+
+ Provides a freely configurable RSS feed.
+
+ Currently a media RSS feed delivering status pictures in JPEG format is supported. This media
+ RSS feed can be used to feed a status display to a network-enabled photo frame.
+
+ You need to have the perl module GD installed. This module is most likely not
+ available for small systems like Fritz!Box.
+ RSS is an extension to FHEMWEB. You must install FHEMWEB to use RSS.
+
+
+ Define
+
+ define <name> RSS jpg <hostname> <filename>
+
+ Defines the RSS feed. jpg is a fixed literal to allow for future
+ extensions. <hostname> is the hostname of the fhem server as
+ seen from the consumer of the RSS feed. <filename> is the
+ name of the file that contains the layout definition.
+
+ Examples:
+
+ define FrameRSS RSS jpg host.example.org /etc/fhem/layout
+ define MyRSS RSS jpg 192.168.1.222 /var/fhem/conf/layout.txt
+
+
+
+
+
+ Set
+
+ set <name> rereadcfg
+
+ Rereads the layout definition from the file. Useful to enable
+ changes in the layout on-the-fly.
+
+
+
+
+ Attributes
+
+
+ - size
The dimensions of the JPEG picture in the format
+ <width>x<height> .
+ - bg
The directory that contains the background pictures (must be in JPEG format).
+ - tmin
The background picture is shown at least tmin seconds,
+ no matter how frequently the RSS feed consumer accesses the page.
+
+
+
+ Usage information
+
+
+ If a least one RSS feed is defined, the menu entry RSS appears in the FHEMWEB
+ side menu. If you click it you get a list of all defined RSS feeds. The URL of any such is
+ RSS feed is http://hostname:port/fhem/rss/name.rss with hostname and
+ name from the RSS feed's definition and the port
+ (usually 8083) and literal /fhem from the underlying FHEMWEB
+ definition.
+
+ Example:
+ http://host.example.org:8083/fhem/rss/FrameRSS.rss
+
+ The media RSS feed points to a dynamically generated JPEG picture. The URL of the JPEG picture
+ belonging to the RSS feed is http://hostname:port/fhem/rss/name.jpg , i.e. the URL
+ of the RSS feed with the extension rss changed to jpg .
+
+ Example:
+ http://host.example.org:8083/fhem/rss/FrameRSS.jpg
+
+ To render the JPEG picture the current, or, if tmin seconds have elapsed, the next
+ JPEG picture from the directory bg is chosen and scaled to the dimensions given
+ in size . The background is black if no usable JPEG picture can be found. Next the
+ script in the layout definition is used to superimpose items on
+ the background.
+
+ You can directly access the URL of the JPEG picture in your browser. Reload the page to see
+ how it works.
+
+ The media RSS feed advertises to refresh after 1 minute (ttl). Some photo frames ignore it and
+ use their preset refresh rate. Go for a photo frame with an adjustable refresh rate (e.g
+ every 5 seconds) if you have the choice!
+
+ This is how the fhem config part might look like:
+
+ define ui FHEMWEB 8083 global
+
+ define FrameRSS RSS jpg host.example.org /etc/fhem/layout
+ attr FrameRSS size 800x600
+ attr FrameRSS bg /usr/share/pictures
+ attr FrameRSS tmin 10
+
+
+
+
+
+ Layout definition
+
+
+ The layout definition is a script for placing items on the background. It is read top-down.
+ It consists of layout control commands and items placement commands. Layout control
+ commands define the appearance of subsequent items. Item placement commands actually
+ render items.
+
+ Everything after a # is treated as a comment and ignored. You can fold long lines by
+ putting a \ at the end.
+
+ General notes
+
+ - Use double quotes to quote literal text if perl specials are allowed.
+ - Text alignment requires the Perl module GD::Text::Align to be installed. Text wrapping (in text boxes) require GD::Text::Wrap to be installed. Debian-based systems can install both with
apt-get install libgd-text-perl .
+
+
+ Notes on coordinates
+
+ - (0,0) is the upper left corner.
+ - Coordinates equal or greater than 1 are considered to be absolute pixels, coordinates between 0 and 1 are considered to
+ be relative to the total width or height of the picture.
+ - Literal
x and y evaluate to the most recently used x- and y-coordinate. See also moveto and moveby below.
+
+
+
+
+
+ Layout control commands
+
+
+ - moveto <x> <y>
Moves most recently used x- and y-coordinate to the given absolute or relative position.
+
+ - moveby <x> <y>
Moves most recently used x- and y-coordinate by the given absolute or relative amounts.
+
+ - font "<font>"
Sets the font. <font> is the name of a TrueType font (e.g.
+ Arial ) or the full path to a TrueType font
+ (e.g. /usr/share/fonts/truetype/arial.ttf ),
+ whatever works on your system.
+
+ - rgb "<color>"
Sets the color. <color> is a 6-digit hex number, every 2 digits
+ determining the red, green and blue color components as in HTML color codes (e.g.
+ FF0000 for red, C0C0C0 for light gray). You can use
+ { <perl special> } for <color>.
+
+ - pt <pt>
Sets the font size in points.
+
+ - thalign|ihalign|halign "left"|"center"|"right"
Sets the horizontal alignment of text, image or both. Defaults to left-aligned. You can use
+ { <perl special> } instead of the literal alignment control word.
+
+ - tvalign|ivalign|valign "top"|"center"|"base"|"bottom"
Sets the vertical alignment of text, image or both. Defaults to base-aligned for text and
+ top-aligned for image. You can use
+ { <perl special> } instead of the literal alignment control word.
+
+ - linespace <space>
Sets the line spacing in pixels for text boxes (see textbox item below).
+
+ - condition <condition>
Subsequent layout control and item placement commands except for another condition command
+ are ignored if and only if <condition>
+ evaluates to false.
+
+
+ Item placement commands
+
+ - text <x> <y> <text>
Renders the text <text> at the
+ position (<x>, <y>) using the current font, font size and color.
+ You can use
+ { <perl special> } for <text> to fully
+ access device readings and do some programming on the fly. See below for examples.
+ - textbox <x> <y> <boxwidth> <text>
Same as before but text is rendered in a box of horizontal width <boxwidth>.
+ - time <x> <y>
Renders the current time in HH:MM format.
+ - seconds <x> <y> <format>
Renders the curent seconds. Maybe usefull for a RSS Clock. With option colon a :
+ - date <x> <y>
Renders the current date in DD:MM:YYY format.
+ - line <x1> <y1> <x2> <y2> [<thickness>]
Draws a line from position (<x1>, <y1>) to position (<x2>, <y2>) with optional thickness (default=1).
+ - img <x> <y> <['w' or 'h']s> <imgtype> <srctype> <arg>
Renders a picture at the
+ position (<x>, <y>). The <imgtype> is one of gif , jpeg , png .
+ The picture is scaled by the factor <s> (a decimal value). If 'w' or 'h' is in front of scale-value the value is used to set width or height to the value in pixel. If <srctype> is file , the picture
+ is loaded from the filename <arg>, if <srctype> is url , the picture
+ is loaded from the URL <arg>, if <srctype> is data , the picture
+ is piped in from data <arg>. You can use
+ { <perl special> } for <arg>. See below for example.
+ Notice: do not load the image from URL that is served by fhem as it leads to a deadlock.
+
+
+
+ Example
+ This is how a layout definition might look like:
+
+ font /usr/share/fonts/truetype/arial.ttf # must be a TrueType font
+ rgb "c0c0c0" # HTML color notation, RGB
+ pt 48 # font size in points
+ time 0.10 0.90
+ pt 24
+ text 0.10 0.95 { ReadingsVal("MyWeather","temperature","?"). "C" }
+ moveby 0 -25
+ text x y "Another text"
+ img 20 530 0.5 png file { "/usr/share/fhem/www/images/weather/" . ReadingsVal("MyWeather","icon","") . ".png" }
+
+
+
+ Special uses
+
+ You can display SVG plots with the aid of the helper function plotAsPng(<name>[,<zoom>[,<offset>]]) (in 98_SVG.pm). Examples:
+
+ img 20 30 0.6 png data { plotAsPng("mySVGPlot") }
+ img 20 30 0.6 png data { plotAsPng("mySVGPlot","qday",-1) }
+
+
+ This requires the perl module Image::LibRSVG and librsvg. Debian-based systems can install these with apt-get install libimage-librsvg-perl .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RandomTimer
+ Define
+
+ define <name> RandomTimer <timespec_start> <device> <timespec_stop> [<timeToSwitch>]
+
+ Defines a device, that imitates the random switch functionality of a timer clock, like a FS20 ZSU.
+ The idea to create it, came from the problem, that is was always a little bit tricky to install a timer clock before
+ holiday: finding the manual, testing it the days before and three different timer clocks with three different manuals - a horror.
+ By using it in conjunction with a dummy and a disableCond, i'm able to switch the always defined timer on every weekend easily from all over the word.
+
+ Deskrition
+ a RandomTimer device starts at timespec_start switching device. Every (timeToSwitch
+ seconds +-10%) it trys to switch device on/off. The switching period stops when the
+ next time to switch is greater than timespec_stop.
+
+
+ Parameter
+
+ timespec_start
+
+ The parameter timespec_start defines the start time of the timer with format: HH:MM:SS.
+ It can be a Perlfunction as known from the timespec at .
+
+ device
+
+ The parameter device defines the fhem device that should be switched.
+
+ timespec_stop
+
+ The parameter timespec_stop defines the stop time of the timer with format: HH:MM:SS.
+ It can be a Perlfunction as known from the timespec at .
+
+ timeToSwitch
+
+ The parameter timeToSwitch defines the time in seconds between two on/off switches.
+
+
+ Examples
+
+ -
+
define ZufallsTimerTisch RandomTimer *{sunset_abs()} StehlampeTisch +03:00:00 500
+ defines a timer that starts at sunset an ends 3 hous later. The timer trys to switch every 500 seconds(+-10%).
+
+ -
+
define ZufallsTimerTisch RandomTimer *{sunset_abs()} StehlampeTisch *{sunset_abs(3*3600)} 480
+ defines a timer that starts at sunset and stops after sunset + 3 hours. The timer trys to switch every 480 seconds(+-10%).
+
+ -
+
define ZufallsTimerTisch RandomTimer *{sunset_abs()} StehlampeTisch 22:30:00 300
+ defines a timer that starts at sunset an ends at 22:30. The timer trys to switch every 300 seconds(+-10%).
+
+
+
+
+
+
+
+ Set
+
+
+
+
+
+ Get
+
+
+
+
+
+ Attributes
+
+ - readingFnAttributes
+ - disableCond
+ The default behavior of a RandomTimer is, that it works.
+ To set the Randomtimer out of work, you can specify in the disableCond attibute a condition in perlcode that must evaluate to true.
+ The Condition must be put into round brackets. The best way is to define
+ a function in 99_utils.
+
+ Examples
+
+ attr ZufallsTimerZ disableCond (!isVerreist())
+ attr ZufallsTimerZ disableCond (Value("presenceDummy" eq "notPresent"))
+
+
+
+ - disableCond
+ The default behavior of a RandomTimer is, that it shuts down the device after stoptime is reached.
+ The keepDeviceAlive attribute changes the behavior. If set, the device status is not changed when the stoptime is reached.
+
+ Example
+
+ attr ZufallsTimerZ keepDeviceAlive
+
+
+
+ - onCmd, offCmd
+ Setting the on-/offCmd changes the command sent to the device. Standard is: "set <device> on".
+ The device can be specified by a @.
+
+ Examples
+
+ attr Timer oncmd {fhem("set @ on-for-timer 14")}
+ attr Timer offCmd {fhem("set @ off 16")}
+ attr Timer oncmd set @ on-for-timer 12
+ attr Timer offCmd set @ off 12
+
+
+
+ - switchmode
+ Setting the switchmode you can influence the behavior of switching on/off.
+ The parameter has the Format 999/999 and the default ist 800/200. The values are in "per mill".
+ The first parameter sets the value of the probability that the device will be switched on when the device is off.
+ The second parameter sets the value of the probability that the device will be switched off when the device is off.
+ Examples
+
+ attr ZufallsTimerZ switchmode 400/400
+
+
+
+
+
+
+Revolt NC-5462
+
+ Provides voltage, current, frequency, power, pf, energy readings for Revolt NC-5462 devices via CUL.
+
+
+
+ Define
+
+ define <name> Revolt <id>
+
+ <id> is a 4 digit hex number to identify the NC-5462 device.
+ Note: devices are autocreated on reception of the first message.
+
+
+
+ Readings
+
+ - energy [kWh]
+ - power [W]
+ - voltage [V]
+ - current [A]
+ - frequency [Hz]
+ - Pf
+
+
+
+
+SCIVT
+
+
+
+
+ Define
+
+ define <name> SCIVT <SCD-device>
+
+
+ Define a SCD series solar controler device. Details see here.
+ You probably need a Serial to USB controller like the PL2303.
+
+ Defining an SCIVT device will schedule an internal task, which reads the
+ status of the device every 5 minutes, and triggers notify/filelog commands.
+ Note: Currently this device does not support a "set" function, only
+ a single get function which reads the device status immediately.
+
+
+ Example:
+
+ define scd SCIVT /dev/ttyUSB2
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+
+
+ Attributes
+
+
+
+
+
+
+
+SISPM
+
+
+
+
+ Define
+
+ define <name> SISPM </path/to/sispmctl>
+
+
+
+
+ When using multiple SIS PMs on one host, sispmctl up to and including V 2.7 has a bug:
+ plug-2:# sispmctl -v -s -d 1 -g all -d 2 -g all
+
+SiS PM Control for Linux 2.7
+
+(C) 2004, 2005, 2006, 2007, 2008 by Mondrian Nuessle, (C) 2005, 2006 by Andreas Neuper.
+This program is free software.
+[...]
+
+Gembird #0 is USB device 013.This device is a 4-socket SiS-PM.
+[...]
+
+Gembird #1 is USB device 015.This device is a 4-socket SiS-PM.
+[...]
+
+Accessing Gembird #1 USB device 015
+Status of outlet 1: on
+Status of outlet 2: on
+Status of outlet 3: on
+Status of outlet 4: on
+Error performing requested action
+Libusb error string: error sending control message: Invalid argument
+Terminating
+*** glibc detected *** sispmctl: double free or corruption (fasttop): 0x000251e0 ***
+[...]
+ Well, the fix is simple and will be sent upstream, but in case it's not incorporated
+ at the time you need it, here it is; it's easy to apply even by hand ;-)
+
+--- src/main.c-old 2010-01-19 16:56:15.000000000 +0100
++++ src/main.c 2010-01-19 16:54:56.000000000 +0100
+@@ -441,7 +441,7 @@
+ }
+ break;
+ case 'd': // replace previous (first is default) device by selected one
+- if(udev!=NULL) usb_close (udev);
++ if(udev!=NULL) { usb_close (udev); udev=NULL; }
+ devnum = atoi(optarg);
+ if(devnum>=count) devnum=count-1;
+ break;
+
+
+ Defines a path to the program "sispmctl", which is used to control (locally attached)
+ "Silver Shield Power Manager" devices. Usually these are connected to the local computer
+ via USB, more than one "sispm" device per computer is supported. (Please note that, due
+ to neglections in their USB driver, AVM's Fritz!Box 7170 (and derivates, like Deutsche
+ Telekom's Speedport W901V) is not able to talk to these devices ... The Fritz!Box
+ 72xx and 73xx should be fine.)
+
+ The communication between FHEM and the Power Manager device is done by using the open
+ source sispmctl program. Thus, for the
+ time being, THIS functionality is only available running FHEM on Linux (or any other platform
+ where you can get the sispmctl program compiled and running). On the bright side: by
+ interfacing via commandline, it is possible to define multiple SISPM devices, e. g. with
+ a wrapper that does execute sispmctl on a remote (Linux) system. And: sispmctl runs happily
+ on Marvells SheevaPlug ;) Please note: if you're not running FHEM as root, you most likely
+ have to make sispmctl setuid root (chmod 4755 /path/to/sispmctl ) or fiddle with
+ udev so that the devices of the Power Manager are owned by the user running FHEM.
+
+ After defining a SISPM device, a first test is done, identifying attached PMs. If this
+ succeeds, an internal task is scheduled to read the status every 30 seconds. (Reason
+ being that someone else could have switched sockets externally to FHEM.)
+
+ To actually control any power sockets, you need to define a SIS_PMS
+ device ;) If autocreate is enabled, those should be autocreated for your convenience as
+ soon as the first scan took place (30 seconds after the define).
+
+ Implementation of SISPM.pm tries to be nice, that is it reads from the pipe only
+ non-blocking (== if there is data), so it should be safe even to use it via ssh or
+ a netcat-pipe over the Internet, but this, as well, has not been tested extensively yet.
+
+
+ Attributes:
+
+ model : SISPM (ignored for now)
+
+
+ Example:
+
+ define PMS_Terrarium SISPM /usr/bin/sispmctl
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+
+SIS_PMS
+
+ This module is responsible for handling the actual sockets (power on,
+ power off, toggle) on a "Silver Shield Power Manager", see SISPM
+ for how to define access to one (SIS_PMS stands for "Silver Shield Power Manager Socket").
+
+
+
+ Define
+
+ define <name> SIS_PMS <serial> <socket>
+
+
+ To securely distinguish multiple attached Power Manager devices, the
+ serial number of those is used. You get these with "sispmctl -s" - or
+ just let autocreate define the sockets attached for you.
+
+
+ <serial> is the serial number of the Power Manager device, see above.
+ <socket> is a number between 1 and 4 (for a 4 socket model)
+
+
+
+ Examples:
+
+ define lamp SIS_PMS 01:02:03:04:05 1
+ define otherlamp SIS_PMS 01:02:03:04:05 3
+ define tv SIS_PMS 01:01:38:44:55 1
+
+
+
+
+
+ Set
+
+ set <name> <value> [<time>]
+
+ where value is one of:
+
+ off
+ on
+ toggle
+ on-till # Special, see the note
+ off-till # Special, see the note
+
+ Examples:
+
+ set lamp on
+ set lamp1,lamp2,lamp3 on
+ set lamp1-lamp3 on
+ set hql_lamp on-till 18:45
+
+
+ Notes:
+
+ - As an external program is used, a noticeable delay may occur.
+ - *-till requires an absolute time in the "at" format (HH:MM:SS, HH:MM
+ or { <perl code> }, where the perl-code returns a time
+ specification).
+ If the current time is greater than the specified time, then the
+ command is ignored, else an "on" or "off" command, respectively, is
+ generated, and for the given time an "off"/"on" command is
+ scheduleld via the at command.
+
+
+
+
+ Get
+
+
+ Attributes
+
+ - do_not_notify
+
+ - dummy
+ Set the device attribute dummy to define devices which should not
+ output any signals. Associated notifys will be executed if the signal
+ is received. Used e.g. to react to a code from a sender, but it will
+ not actually switch if triggered in the web frontend.
+
+
+ - loglevel
+
+
+
+
+
+
+SML
+
+This module supports "Intelligenter Strom Zhler"(ENBW) and "Sparzhler" (Yellow Strom).
+The electricity meter will be polled in a defined interval (1-100) for new values.
+
+ Define
+ define <name> SML <host> <port> [<interval> <timeout>]
+
+ Example:
+ define StromZ1 SML 192.168.178.20
+ define StromZ2 SML 192.168.10.25 60 60
+
+
+ Set
+ set <name> <value> <nummber> where value is one of:
+
+ TOTALPOWER
+ YEARPOWER
+ MONTHPOWER
+ DAYPOWER
+ Interval
+
+ Example:
+ set <name> TOTALPOWER 12345
+
+ Get
+ get <name> <value> where value is one of:
+
+ TOTALPOWER
+ YEARPOWER
+ MONTHPOWER
+ DAYPOWER
+ Interval
+
+ Example:
+ get <name> DAYPOWER
+ get <name> YEARPOWER
+
+
+
+
+STACKABLE_CC
+
+ This module handles the stackable CC1101 devices for the Raspberry PI from
+ busware.de. You can attach a lot of CUL-Type devices to a single RPi this way.
+ The first device is defined as a CUL, the rest of them as STACKABLE_CC.
+
+
+
+ Define
+
+ define <name> STACKABLE_CC <Base-Device-Name>
+
+ <Base-Device-Name> is the name of the device, which this device is
+ attached on, the first one has to be defined as a CUL device
+ Example:
+
+ define SCC0 CUL /dev/ttyAMA0@38400
+ attr SCC0 rfmode SlowRF
+ define SCC1 STACKABLE_CC CUL
+ attr SCC1 rfmode HomeMatic
+ define SCC2 STACKABLE_CC CUL
+ attr SCC2 rfmode Max
+
+ Important:
+
+ - The rfmode has to be specified explicitely (valid for the STACKABLE_CC
+ types only, not for the first, which is defined as a CUL).
+ - In case of SlowRF, the FHTID has to be specified explicitely with the
+ command "set SCCX raw T01HHHH". Again, this is valid for the STACKABLE_CC
+ types only.
+ - If you rename the base CUL or a STACKABLE_CC, which is a base for
+ another one, the define of the next one has to be adjusted, and FHEM has to be
+ restarted.
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+ - IODev
+ - ignore
+ The rest of the attributes is the same as for the CUL.
+
+
+
+
+
+STV
+
+This module supports Samsung TV devices.
+LEXXBXX (B Series) use port 52235
+LEXXCXX (C|D Series) use port 55000
+
+ Define
+ define <name> STV <host>]
+
+ Example:
+ define Television1 STV 192.168.178.20 or
+ define Television2 STV 192.168.178.20 52235
+ define Television2 STV 192.168.178.20 55000
+
+ Set
+ set <name> <value> <nummber> where value is one of:
+
+ mute
+ volume
+ call
+ sms
+ date
+
+ Example:
+ set <name> mute
+ set <name> volume 20
+ set <name> call Peter 012345678 Phone 87654321
+
+ Get
+
+
+
+
+SUNRISE_EL
+
+ This module is used to define the functions
+sunrise, sunset,
+sunrise_rel, sunset_rel
+sunrise_abs, sunset_abs
+isday
+ perl functions, to be used in at or FS20 on-till commands.
+ First you should set the longitude and latitude global attributes to the
+ exact longitude and latitude values (see e.g. maps.google.com for the exact
+ values, which should be in the form of a floating point value). The default
+ value is Frankfurt am Main, Germany.
+
+ The default altitude ($defaultaltit in SUNRISE_EL.pm) defines the sunrise/sunset
+ for Civil twilight (i.e. one can no longer read outside without artificial
+ illumination), which differs from sunrise/sunset times found on different
+ websites. See perldoc "DateTime::Event::Sunrise" for alternatives.
+
+
+ sunrise()/sunset() returns the absolute time of the next sunrise/sunset,
+ adding 24 hours if the next event is tomorrow, to use it in the timespec of
+ an at device or for the on-till command for FS20 devices.
+
+ sunrise_rel()/sunset_rel() returns the relative time to the next
+ sunrise/sunset.
+ sunrise_abs()/sunset_abs() return the absolute time of the corresponding
+ event today (no 24 hours added).
+ All functions take up to three arguments:
+
+ - The first specifies an offset (in seconds), which will be added to the
+ event.
+ - The second and third specify min and max values (format: "HH:MM").
+
+
+ isday() can be used in some notify or at commands to check if the sun is up or
+ down.
+
+ Optionally, for all functions you can set first argument which defines a horizon value
+ which then is used instead of the $defaultaltit in SUNRISE_EL.pm.
+ Possible values are: "REAL", "CIVIL", "NAUTIC", "ASTRONOMIC" or a
+ positive or negative number preceded by "HORIZON="
+ REAL is 0, CIVIL is -6, NATUIC is -12, ASTRONOMIC is -18 degrees above horizon.
+ Example:
+
+ # When sun is 6 degrees below horizon - same as sunrise();
+ sunrise("CIVIL");
+
+ # When sun is 3 degrees below (-3 above) horizon (Between real and civil sunset)
+ sunset("HORIZON=-3");
+
+ # When sun is 1 degree above horizon
+ sunset("HORIZON=1");
+
+ # Switch lamp1 on at real sunset, not before 18:00 and not after 21:00
+ define a15 at *{sunset("REAL",0,"18:00","21:00")} set lamp1 on
+
+
+
+ Define
+
+ Set
+
+ Get
+
+ Attributes
+
+
+ - latitude
+ If set, this latitude is used to calculate sunset/sunrise
+ Notation need to be in decimal format (for example Berlin = 52.666)
+ As default Frankfurt/Main, Germany (50.112) is used.
+
+
+ - longitude
+ If set, this longitude is used to calculate sunset/sunrise
+ Notation need to be in decimal format (for example Berlin = 13.400)
+ As default Frankfurt/Main, Germany (8.686) is used.
+
+
+ - altitude
+ Used by other modules.
+
+ Note: these are global attributes, e.g.
+
+ attr global latitude 50.112
+ attr global longitude 8.686
+
+
+
+
+
+
+
+SVG
+
+
+ Define
+
+ define <name> SVG
+ <logDevice>:<gplotfile>:<logfile>
+
+ This is the Plotting/Charting device of FHEMWEB
+ Examples:
+
+ define MyPlot SVG inlog:temp4hum4:CURRENT
+
+
+
+ Notes:
+
+ - Normally you won't define an SVG device manually, as
+ FHEMWEB makes it easy for you, just plot a logfile (see logtype) and click on "Create SVG instance".
+ Specifying CURRENT as a logfilename will always access the current
+ logfile, even if its name changes regularly.
+ - For historic reasons this module uses a Gnuplot file description
+ to store different attributes. Some special commands (beginning with
+ #FileLog or #DbLog) are used additionally, and not all gnuplot
+ attribtues are implemented.
+
+
+
+
+ Set
+
+ - copyGplotFile
+ Copy the currently specified gplot file to a new file, which is named
+ after the SVG device, existing files will be overwritten.
+ This operation is needed in order to use the plot editor (see below)
+ without affecting other SVG instances using the same gplot file.
+ Creating the SVG instance from the FileLog detail menu will also
+ create a unique gplot file, in this case this operation is not needed.
+
+
+
+
+ Get
+
+
+ Attributes
+
+
+ - fixedrange [offset]
+ Contains two time specs in the form YYYY-MM-DD separated by a space.
+ In plotmode gnuplot-scroll or SVG the given time-range will be used,
+ and no scrolling for this SVG will be possible. Needed e.g. for
+ looking at last-years data without scrolling.
+ If the value is one of hour, day, <N>days, week, month, year than
+ set the zoom level for this SVG independently of the user specified
+ zoom-level. This is useful for pages with multiple plots: one of the
+ plots is best viewed in with the default (day) zoom, the other one with
+ a week zoom.
+
+ If given, the optional integer parameter offset refers to a different
+ period (e.g. last year: fixedrange year -1, 2 days ago: fixedrange day
+ -2).
+
+
+
+
+ - fixedoffset <nDays>
+ Set an fixed offset (in days) for the plot.
+
+
+
+ - startDate
+ Set the start date for the plot. Used for demo installations.
+
+
+ - plotsize
+
+ - plotmode
+
+
+ - label
+ Double-Colon separated list of values. The values will be used to replace
+ <L#> type of strings in the .gplot file, with # beginning at 1
+ (<L1>, <L2>, etc.). Each value will be evaluated as a perl
+ expression, so you have access e.g. to the Value functions.
+
+ If the plotmode is gnuplot-scroll or SVG, you can also use the min, max,
+ avg, cnt, sum, currval (last value) and currdate (last date) values of
+ the individual curves, by accessing the corresponding values from the
+ data hash, see the example below:
+
+
+ - Fixed text for the right and left axis:
+
+ - Fhem config:
+ attr wl_1 label "Temperature"::"Humidity"
+ - .gplot file entry:
+ set ylabel <L1>
+ set y2label <L2>
+
+ - Title with maximum and current values of the 1st curve (FileLog)
+
+ - Fhem config:
+ attr wl_1 label "Max $data{max1}, Current $data{currval1}"
+ - .gplot file entry:
+ set title <L1>
+
+
+
+
+
+ - title
+ A special form of label (see above), which replaces the string <TL>
+ in the .gplot file. It defaults to the filename of the logfile.
+
+
+
+ - plotfunction
+ Space value separated list of values. The value will be used to replace
+ <SPEC#> type of strings in the .gplot file, with # beginning at 1
+ (<SPEC1>, <SPEC2>, etc.) in the #FileLog or #DbLog directive.
+ With this attribute you can use the same .gplot file for multiple devices
+ with the same logdevice.
+ Example:
+ - #FileLog
+ with: attr plotfunction "4:IR\x3a:0:"
+ instead of
+ #FileLog 4:IR\x3a:0:
+
+ - #DbLog
+ with: attr plotfunction
+ "Garage_Raumtemp:temperature::" instead of
+ #DbLog Garage_Raumtemp:temperature::
+
+
+
+
+
+
+
+ Plot-Editor
+
+ This editor is visible on the detail screen of the SVG instance.
+ Most features are obvious here, up to some exceptions:
+
+ - if you want to omit the title for a Diagram label, enter notitle in the
+ input field.
+ - if you want to specify a fixed value (not taken from a column) if a
+ string found (e.g. 1 if the FS20 switch is on and 0 if it is off), then
+ you have to specify the Tics first, and write the .gplot file, before you
+ can select this value from the dropdown.
+ Example:
+
+ Enter in the Tics field: ("On" 1, "Off" 0)
+ Write .gplot file
+ Select "1" from the column dropdown (note the double quote!) for the
+ regexp switch.on, and "0" for the regexp switch.off.
+ Write .gplot file again
+
+
+ The visibility of the ploteditor can be configured with the FHEMWEB attribute
+ ploteditor.
+
+
+
+
+SWAP
+
+
+
+ The SWAP protocoll is used by panStamps (panstamp.com).
+
+ This is a generic module that will handle all SWAP devices with known device description files via
+ a panStick as the IODevice.
+
+ All communication is done on the SWAP register level. FHEM readings are created for all user registers
+ and userReadings are created to map low level SWAP registers to 'human readable' format with the
+ mapping from the device descriprion files.
+
+ For higher level features like "on,off,on-for-timer,..." specialized modules have to be used.
+
+ Messages for devices in power-down-state are queued and send when the device enters SYNC state.
+ This typicaly happens during device startup after a reset.
+
+
+ Notes:
+
+ - This module requires XML::Simple.
+ - Devices with the default address FF will be changed to the first free address in the range F0-FE.
+ - For power-down devices the default transmit interval of FFFF will be changed to 0384 (900 seconds).
+
+
+
+
+
+
+ Define
+
+ define <name> SWAP <ID>
+
+ The ID is a 2 digit hex number to identify the moth in the panStamp network.
+
+
+
+
+ Set
+
+ - regGet <reg>
+ request status message for register id <reg>.
+ for system registers the register name can be used instead if the two digit register id in hex.
+
+
+ - regSet <reg> <data>
+ write <data> to register id <reg>.
+ for system registers the register name can be used instead if the twi digit register id in hex.
+
+
+ - regSet <reg>.<ep> <data>
+ write <data> to endpoint <ep> of register <reg>. will not work if no reading for register <reg> is available as all nibbles that are not part of endpoint <ep> will be filled from this reading.
+
+
+ - statusRequest
+ request transmision of all registers.
+
+ - readDeviceXML
+ reload the device description xml file.
+
+ - clearUnconfirmed
+ clears the list of unconfirmed messages.
+
+
+
+
+ Get
+
+ - regList
+ list all non-system registers of this device.
+
+ - regListAll
+ list all registers of this device.
+
+ - listUnconfirmed
+ list all unconfirmed messages.
+
+ - products
+ dumps all known devices.
+
+ - deviceXML
+ dumps the device xml data.
+
+
+
+
+ Attributes
+
+ - ProductCode
+ ProductCode of the device. used to read the register configuration from the device definition file.
+ hast to be set manualy for devices that are in sleep mode during definition.
+
+
+
+
+
+
+SWAP_0000002200000003
+
+
+
+ Module for the justme version of the panstamp rgb driver board with ir (sketch product code 0000002200000003).
+
+
+ to learn an ir command the simplest way ist to use 'learnIR #'. the on board led will start to blink indicating ir learning mode. after an ir command is received the blinking will switch to slow and the boards waits for a fhem command (on/off/...) and will link the ir command to the fhem command.
+
+ received ir commands that will not trigger one of the 16 possible learned commands will be send as SWAP register 0C to fhem and can be used in notifys.
+
+ SWAP register 0E will configure the power on state of the board: off, configured color, last color before power down.
+
+
+
+ Define
+
+ define <name> SWAP_0000002200000003 <ID> 0000002200000003
+
+
+
+
+
+ Set
+ all SWAP set commands and:
+
+ - on
+
+ - on-for-timer <time>
+
+ - off
+
+ - toggle
+
+
+ - rgb <RRGGBB>
+ set the led color
+
+
+ - dimUP
+
+ - dimDown
+
+
+ - setIR # <code>
+
+ - learnIR #
+
+ - storeIR # <code> <command>
+
+
+ - getIR # | all
+ read content of IR regisgter # or all IR registers
+
+
+ - setFade <RRGGBB> <time>
+ stores color and time in fede register #
+
+
+ - startFade <#1> <#2>
+ starts an endless fading loop over all fading registers [#1..#2]
+
+
+ - getFade # | all
+ read content of fade regisgter # or all fade regisgters
+
+
+ - set extensions are supported.
+
+
+
+ Get
+ all SWAP get commands and:
+
+ - rgb
+ returns the current led color
+
+ - listIR
+ list all IR registers of this device. use getIR first.
+
+ - listFade
+ list all fade registers. use getFade first.
+
+
+
+
+ Attributes
+
+ - color-icon
+ 1 -> use lamp color as icon color and 100% shape as icon shape
+ 2 -> use lamp color scaled to full brightness as icon color and dim state as icon shape
+ - ProductCode
+ must be 0000002200000003
+
+
+
+
+
+SYSMON
+
+This module provides statistics about the system running FHEM server. Only Linux-based systems are supported.
+Some informations are hardware specific and are not available on every platform.
+So far, this module has been tested on the following systems:
+Raspberry Pi (Debian Wheezy) BeagleBone Black, FritzBox 7390 (no CPU data), WR703N under OpenWrt (no CPU data).
+
+ Define
+
+ define <name> SYSMON [<M1>[ <M2>[ <M3>[ <M4>]]]]
+
+
+This statement creates a new SYSMON instance. The parameters M1 to M4 define the refresh interval for various Readings (statistics). The parameters are to be understood as multipliers for the time defined by INTERVAL_BASE. Because this time is fixed at 60 seconds, the Mx-parameter can be considered as time intervals in minutes.
+If one (or more) of the multiplier is set to zero, the corresponding readings is deactivated.
+
+
+ The parameters are responsible for updating the readings according to the following scheme:
+
+ - M1: (Default: 1)
+ cpu_freq, cpu_temp, cpu_temp_avg, loadavg, stat_cpu, stat_cpu_diff, stat_cpu_percent, stat_cpu_text
+
+ - M2: (Default: M1)
+ ram, swap
+
+ - M3: (Default: M1)
+ eth0, eth0_diff, wlan0, wlan0_diff
+
+ - M4: (Default: 10*M1)
+ Filesystem informations
+
+ - The following parameters are always updated with the base interval (regardless of the Mx-parameter):
+ fhemuptime, fhemuptime_text, idletime, idletime_text, uptime, uptime_text
+
+
+
+
+ Readings:
+
+
+ - cpu_bogomips
+ CPU Speed: BogoMIPS
+
+ - cpu_freq
+ CPU frequency
+
+
+ - cpu_temp
+ CPU temperature
+
+
+ - cpu_temp_avg
+ Average of the CPU temperature, formed over the last 4 values.
+
+
+ - fhemuptime
+ Time (in seconds) since the start of FHEM server.
+
+
+ - fhemuptime_text
+ Time since the start of the FHEM server: human-readable output (text representation).
+
+
+ - idletime
+ Time spent by the system since the start in the idle mode (period of inactivity).
+
+
+ - idletime_text
+ The inactivity time of the system since system start in human readable form.
+
+
+ - loadavg
+ System load (load average): 1 minute, 5 minutes and 15 minutes.
+
+
+ - ram
+ memory usage.
+
+
+ - swap
+ swap usage.
+
+
+ - uptime
+ System uptime.
+
+
+ - uptime_text
+ System uptime (human readable).
+
+
+ - Network statistics
+ Statistics for the specified network interface about the data volumes transferred and the difference since the previous measurement.
+
+ Examples:
+ Amount of the transmitted data via interface eth0.
+ eth0: RX: 940.58 MB, TX: 736.19 MB, Total: 1676.77 MB
+ Change of the amount of the transferred data in relation to the previous call (for eth0).
+ eth0_diff: RX: 0.66 MB, TX: 0.06 MB, Total: 0.72 MB
+
+
+ - File system information
+ Usage of the desired file systems.
+ Example:
+ fs_root: Total: 7340 MB, Used: 3573 MB, 52 %, Available: 3425 MB at /
+
+
+ - CPU utilization
+ Information about the utilization of CPUs.
+ Example:
+ 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 %
+
+
+ - user defined
+ These readings provide output of commands, which are passed to the operating system.
+
+
+
+
+
+ Sample output:
+
+
+
+cpu_freq |
+ |
+ |
+
+ |
+ |
+ |
+
+ |
+ |
+ |
+
+ |
+RX: 2954.22 MB, TX: 3469.21 MB, Total: 6423.43 MB |
+ |
+
+ |
+RX: 6.50 MB, TX: 0.23 MB, Total: 6.73 MB |
+ |
+
+ |
+ |
+ |
+
+ |
+0 days, 03 hours, 07 minutes |
+ |
+
+ |
+ |
+ |
+
+ |
+10 days, 18 hours, 37 minutes (88.35 %) |
+ |
+
+ |
+ |
+ |
+
+ |
+Total: 485 MB, Used: 140 MB, 28.87 %, Free: 345 MB |
+ |
+
+ |
+ |
+ |
+
+ |
+ |
+ |
+
+ |
+12 days, 04 hours, 42 minutes |
+ |
+
+ |
+RX: 0.00 MB, TX: 0.00 MB, Total: 0 MB |
+ |
+
+ |
+RX: 0.00 MB, TX: 0.00 MB, Total: 0.00 MB |
+ |
+
+ |
+Total: 7404 MB, Used: 3533 MB, 50 %, Available: 3545 MB at / |
+ |
+
+ |
+Total: 56 MB, Used: 19 MB, 33 %, Available: 38 MB at /boot |
+ |
+
+fs_usb1 |
+Total: 30942 MB, Used: 6191 MB, 21 %, Available: 24752 MB at /media/usb1 |
+2013-11-27 00:05:36 |
+
+stat_cpu |
+10145283 0 2187286 90586051 542691 69393 400342 |
+2013-11-27 00:05:36 |
+
+stat_cpu_diff |
+2151 0 1239 2522 10 3 761 |
+2013-11-27 00:05:36 |
+
+stat_cpu_percent |
+4.82 0.00 1.81 93.11 0.05 0.00 0.20 |
+2013-11-27 00:05:36 |
+
+stat_cpu_text |
+user: 32.17 %, nice: 0.00 %, sys: 18.53 %, idle: 37.72 %, io: 0.15 %, irq: 0.04 %, sirq: 11.38 % |
+2013-11-27 00:05:36 |
+
+
+
+
+ Get:
+
+ - interval
+ Lists the specified polling intervalls.
+
+
+ - list
+ Lists all readings.
+
+
+ - update
+ Refreshs all readings.
+
+
+ - version
+ Displays the version of SYSMON module.
+
+
+
+
+ Set:
+
+ - interval_multipliers
+ Defines update intervals (as in the definition of the device).
+
+
+ - clean
+ Clears user-definable Readings. After an update (manual or automatic) new readings are generated.
+
+
+ - clear <reading name>
+ Deletes the Reading entry with the given name. After an update this entry is possibly re-created (if defined). This mechanism allows the selective deleting unnecessary custom entries.
+
+
+
+
+ Attributes:
+
+ - filesystems <reading name>[:<mountpoint>[:<comment>]],...
+ Specifies the file system to be monitored (a comma-separated list).
+ Reading-name is used in the display and logging, the mount point is the basis of the evaluation, comment is relevant to the HTML display (see SYSMON_ShowValuesHTML)
+ Examples:
+ /boot,/,/media/usb1
+ fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
+
+
+ - network-interfaces <name>[:<interface>[:<comment>]],...
+ Comma-separated list of network interfaces that are to be monitored. Each entry consists of the Reading-name, the name of the Netwerk adapter and a comment for the HTML output (see SYSMON_ShowValuesHTML). If no colon is used, the value is used simultaneously as a Reading-name and interface name.
+ Example ethernet:eth0:Ethernet,wlan:wlan0:WiFi
+
+
+ - user-defined <readingsName>:<Interval_Minutes>:<Comment>:<Cmd>,...
+ This comma-separated list defines user defined Readings with the following data: Reading name, refresh interval (in minutes), a Comment, and operating system command.
+ The os commands are executed according to the specified Intervals and are noted as Readings with the specified name. Comments are used for the HTML output (see SYSMON_ShowValuesHTML)..
+ All parameter parts are required!
+ It is important that the specified commands are executed quickly, because at this time the entire FHEM server is blocked!
+ If results of the long-running operations required, these should be set up as a CRON job and store results as a text file.
+ Example: Display of package updates for the operating system:
+ cron-Job:
+ 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
+
+ uder-defined attribute
sys_updates:1440:System Aktualisierungen:cat /opt/fhem/data/updatestatus.txt
+ the number of available updates is daily recorded as 'sys_updates'.
+
+
+ - disable
+ Possible values: 0 and 1. '1' means that the update is stopped.
+
+
+
+
+ Plots:
+
+ predefined gplot files:
+
+ FileLog versions:
+
+ SM_RAM.gplot
+ SM_CPUTemp.gplot
+ SM_FS_root.gplot
+ SM_FS_usb1.gplot
+ SM_Load.gplot
+ SM_Network_eth0.gplot
+ SM_Network_eth0t.gplot
+ SM_Network_wlan0.gplot
+ SM_CPUStat.gplot
+ SM_CPUStatSum.gplot
+ SM_CPUStatTotal.gplot
+
+ DbLog versions:
+
+ 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 output method (see Weblink): SYSMON_ShowValuesHTML(<SYSMON-Instance>[,<Liste>])
+
+ The module provides a function that returns selected Readings as HTML.
+ As a parameter the name of the defined SYSMON device is expected.
+ The second parameter is optional and specifies a list of readings to be displayed in the format <ReadingName>[:<Comment>[:<Postfix>]] .
+ ReadingName is the Name of desired Reading, Comment is used as the display name and postfix is displayed after eihentlichen value (such as units or as MHz can be displayed).
+ If no Comment is specified, an internally predefined description is used.
+ If no list specified, a predefined selection is used (all values are displayed).
+ define sysv1 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
+ define sysv2 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))}
+
+
+ Text output method (see Weblink): SYSMON_ShowValuesText(<SYSMON-Instance>[,<Liste>])
+
+ According to SYSMON_ShowValuesHTML, but formatted as plain text.
+
+
+ Examples:
+
+
+ # Modul-Definition
+ define sysmon SYSMON 1 1 1 10
+ #attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,~ /$
+ attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*,stat_cpu_percent
+ attr sysmon filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
+ attr sysmon network-interfaces eth0:eth0:Ethernet,wlan0:wlan0:WiFi
+ attr sysmon group RPi
+ attr sysmon room 9.03_Tech
+
+ # Log
+ define FileLog_sysmon FileLog ./log/sysmon-%Y-%m.log sysmon
+ attr FileLog_sysmon group RPi
+ attr FileLog_sysmon logtype SM_CPUTemp:Plot,text
+ attr FileLog_sysmon room 9.03_Tech
+
+ # Visualisierung: CPU-Temperatur
+ define wl_sysmon_temp SVG FileLog_sysmon:SM_CPUTemp:CURRENT
+ attr wl_sysmon_temp group RPi
+ attr wl_sysmon_temp label "CPU Temperatur: Min $data{min2}, Max $data{max2}, Last $data{currval2}"
+ attr wl_sysmon_temp room 9.03_Tech
+
+ # Visualisierung: Netzwerk-Datenübertragung für eth0
+ define wl_sysmon_eth0 SVG FileLog_sysmon:SM_Network_eth0:CURRENT
+ attr wl_sysmon_eth0 group RPi
+ attr wl_sysmon_eth0 label "Netzwerk-Traffic eth0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
+ attr wl_sysmon_eth0 room 9.03_Tech
+
+ # Visualisierung: Netzwerk-Datenübertragung für wlan0
+ define wl_sysmon_wlan0 SVG FileLog_sysmon:SM_Network_wlan0:CURRENT
+ attr wl_sysmon_wlan0 group RPi
+ attr wl_sysmon_wlan0 label "Netzwerk-Traffic wlan0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
+ attr wl_sysmon_wlan0 room 9.03_Tech
+
+ # Visualisierung: CPU-Auslastung (load average)
+ define wl_sysmon_load SVG FileLog_sysmon:SM_Load:CURRENT
+ attr wl_sysmon_load group RPi
+ attr wl_sysmon_load label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
+ attr wl_sysmon_load room 9.03_Tech
+
+ # Visualisierung: RAM-Nutzung
+ define wl_sysmon_ram SVG FileLog_sysmon:SM_RAM:CURRENT
+ attr wl_sysmon_ram group RPi
+ attr wl_sysmon_ram label "RAM-Nutzung Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
+ attr wl_sysmon_ram room 9.03_Tech
+
+ # Visualisierung: Dateisystem: Root-Partition
+ define wl_sysmon_fs_root SVG FileLog_sysmon:SM_FS_root:CURRENT
+ attr wl_sysmon_fs_root group RPi
+ attr wl_sysmon_fs_root label "Root Partition Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
+ attr wl_sysmon_fs_root room 9.03_Tech
+
+ # Visualisierung: Dateisystem: USB-Stick
+ define wl_sysmon_fs_usb1 SVG FileLog_sysmon:SM_FS_usb1:CURRENT
+ attr wl_sysmon_fs_usb1 group RPi
+ attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
+ attr wl_sysmon_fs_usb1 room 9.03_Tech
+
+ # Anzeige der Readings zum Einbinden in ein 'Raum'.
+ define SysValues weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
+ attr SysValues group RPi
+ attr SysValues room 9.03_Tech
+
+ # Anzeige CPU Auslasung
+ define wl_sysmon_cpustat SVG FileLog_sysmon:SM_CPUStat:CURRENT
+ attr wl_sysmon_cpustat label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
+ attr wl_sysmon_cpustat group RPi
+ attr wl_sysmon_cpustat room 9.99_Test
+ attr wl_sysmon_cpustat plotsize 840,420
+ define wl_sysmon_cpustat_s SVG FileLog_sysmon:SM_CPUStatSum:CURRENT
+ attr wl_sysmon_cpustat_s label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
+ attr wl_sysmon_cpustat_s group RPi
+ attr wl_sysmon_cpustat_s room 9.99_Test
+ attr wl_sysmon_cpustat_s plotsize 840,420
+ define wl_sysmon_cpustatT SVG FileLog_sysmon:SM_CPUStatTotal:CURRENT
+ attr wl_sysmon_cpustatT label "CPU-Auslastung"
+ attr wl_sysmon_cpustatT group RPi
+ attr wl_sysmon_cpustatT plotsize 840,420
+ attr wl_sysmon_cpustatT room 9.99_Test
+
+
+
+
+
+
+
+SYSSTAT
+
+ Provides system statistics for the host FHEM runs on or a remote Linux system that is reachable by preconfigured passwordless ssh access.
+
+ Notes:
+
+ - This module needs
Sys::Statistics::Linux on Linux.
+ It can be installed with 'cpan install Sys::Statistics::Linux '
+ or on debian with 'apt-get install libsys-statistics-linux-perl '
+
+ - To monitor a target by snmp
Net::SNMP hast to be installed.
+
+ - To plot the load values the following code can be used:
+
+ define sysstatlog FileLog /usr/local/FHEM/var/log/sysstat-%Y-%m.log sysstat
+ attr sysstatlog nrarchive 1
+ define wl_sysstat weblink fileplot sysstatlog:sysstat:CURRENT
+ attr wl_sysstat label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
+ attr wl_sysstat room System
+
+ - to match the root filesystem (mount point '/') in diskusage plots use
+ '
#FileLog 4:/\x3a:0: ' or '#FileLog 4:\s..\s:0: '
+ and not '#FileLog 4:/:0: ' as the later will match all mount points .
+
+
+
+ Define
+
+ define <name> SYSSTAT [<interval> [<interval_fs>] [<host>]]
+
+
+ Defines a SYSSTAT device.
+
+ The load is updated every <interval> seconds. The default and minimum is 60.
+ The diskusage is updated every <interval_fs> seconds. The default is <interval>*60 and the minimum is 60.
+ <interval_fs> is only aproximated and works best if <interval_fs> is an integral multiple of <interval>.
+
+ If <host> is given it has to be accessible by ssh without the need for a password.
+
+ Examples:
+
+ define sysstat SYSSTAT
+ define sysstat SYSSTAT 300
+ define sysstat SYSSTAT 60 600
+
+
+
+
+ Readings
+
+ - load
+ the 1 minute load average (for windows targets monitored by snmp aproximated value
+ - state
+ the 1, 5 and 15 minute load averages (or windows targets monitored by snmp the per cpu utilization)
+ - user,system,idle,iowait
+ respective percentage of systemutilization (linux targets only)
+ - <mountpoint>
+ free bytes for <mountpoint>
+
+
+
+ Get
+
+ get <name> <value>
+
+ where value is one of
+ - filesystems
+ Lists the filesystems that can be monitored.
+
+
+
+ Attributes
+
+ - disable
+ keep timers running but disable collection of statistics.
+ - filesystems
+ List of comma separated filesystems (not mountpoints) that should be monitored.
+ Examples:
+
+ attr sysstat filesystems /dev/md0,/dev/md2
+ attr sysstat filesystems /dev/.*
+ attr sysstat filesystems 1,3,5
+
+ - showpercent
+ If set the usage is shown in percent. If not set the remaining free space in bytes is shown.
+ - snmp
+ 1 -> use snmp to monitor load, uptime and filesystems (including physical and virtual memory)
+ - stat
+ 1 -> monitor user,system,idle and iowait percentage of system utilization (available only for linux targets)
+ - raspberrytemperature
+ If set and > 0 the raspberry pi on chip termal sensor is read.
+ If set to 2 a geometric average over the last 4 values is created.
+ - synologytemperature
+ If set and > 0 the main temperaure of a synology diskstation is read. requires snmp.
+ If set to 2 a geometric average over the last 4 values is created.
+ - raspberrycpufreq
+ If set and > 0 the raspberry pi on chip termal sensor is read.
+ - uptime
+ If set and > 0 the system uptime is read.
+ If set to 2 the uptime is displayed in seconds.
+ - useregex
+ If set the entries of the filesystems list are treated as regex.
+ - ssh_user
+ The username for ssh remote access.
+ - readingFnAttributes
+
+
+
+
+TCM
+
+ The TCM module serves an USB or TCP/IP connected TCM120 or TCM310 EnOcean
+ Transceiver module. These are mostly packaged together with a serial to USB
+ chip and an antenna, e.g. the BSC BOR contains the TCM120, the USB 300 from
+ EnOcean and the EUL from busware contains a TCM310. See also the datasheet
+ available from www.enocean.com.
+
+ As the TCM120 and the TCM310 speak completely different protocols, this
+ module implements 2 drivers in one. It is the "physical" part for the EnOcean module.
+ Please note that EnOcean repeaters also send Fhem data telegrams again. Use
+ attr <name> blockSenderID own
+ to block receiving telegrams with TCM SenderIDs.
+ The address range used by your transceiver module, can be found in the
+ parameters BaseID and LastID.
+
+ The transceiver moduls do not always support all commands. The supported range
+ of commands depends on the hardware and the firmware version. A firmware update
+ is usually not provided.
+
+ The TCM module enables also a read-only wired connection to Eltako actuators over the
+ Eltako RS485 bus in the switchboard or distribution box via Eltako FGW14 RS232-RS485
+ gateway modules. These actuators are linked to an associated wireless antenna module
+ (FAM14) on the bus. The FAM14 device frequently polls the actuator status of all
+ associated devices if the FAM14 operating mode rotary switch is on position 4.
+ Therefore, actuator states can be retrieved more reliable, even after any fhem downtime,
+ when switch events or actuator confirmations could not have been tracked during the
+ downtime. As all actuators are polled approx. every 1-2 seconds, it should be avoided to
+ use event-on-update-reading. Use instead either event-on-change-reading or
+ event-min-interval.
+ The Eltako bus uses the EnOcean Serial Protocol version 2 (ESP2) protocol, which is
+ the same serial protocol used by TCM120 modules. For this reason, a FGW14 can be
+ configured as a TCM120.
+
+
+ Define
+
+ define <name> TCM [120|310] <device>
+
+ First you have to specify the type of the EnOcean Transceiver Chip, i.e
+ either 120 for the TCM120 or 310 for the TCM310.
+ device can take the same parameters (@baudrate, @directio,
+ TCP/IP, none) like the CUL, but you probably have
+ to specify the baudrate: the TCM120 should be opened with 9600 Baud, the
+ TCM310 with 57600 baud. For Eltako FGW14 devices, type has to be set to 120 and
+ the baudrate has to be set to 57600 baud if the FGW14 operating mode
+ rotary switch is on position 6.
+ Example:
+
+ define BscBor TCM 120 /dev/ttyACM0@9600
+ define FGW14 TCM 120 /dev/ttyS3@57600
+ define TCM310 TCM 310 /dev/ttyACM0@57600
+ define TCM310 TCM 310 COM1@57600 (Windows)
+
+
+
+
+
+
+ Set
+ TCM 120
+ - idbase [FF800000 ... FFFFFF80]
+ Set the BaseID.
+ Note: The firmware executes this command only up to then times to prevent misuse.
+ - modem_off
+ Deactivates TCM modem functionality
+ - modem_on [0000 ... FFFF]
+ Activates TCM modem functionality and sets the modem ID
+ - teach <t/s> or pairForSec <t/s>
+ Set Fhem in teach-in mode.
+ The command is required for UTE and to teach-in bidirectional actuators
+ e. g. EEP 4BS (RORG A5-20-XX),
+ see Bidirectional Teach-In / Teach-Out.
+ - reset
+ Reset the device
+ - sensitivity [00|01]
+ Set the TCM radio sensitivity: low = 00, high = 01
+ - sleep
+ Enter the energy saving mode
+ - wake
+ Wakes up from sleep mode
+
+ For details see the TCM 120 User Manual available from www.enocean.com.
+
+
+ TCM 310
+ - baseID [FF800000 ... FFFFFF80]
+ Set the BaseID.
+ Note: The firmware executes this command only up to then times to prevent misuse.
+ - bist
+ Perform Flash BIST operation (Built-in-self-test).
+ - maturity [00|01]
+ Waiting till end of maturity time before received radio telegrams will transmit:
+ radio telegrams are send immediately = 00, after the maturity time is elapsed = 01
+ - teach <t/s> or pairForSec <t/s>
+ Set Fhem in teach-in mode.
+ The command is required for UTE and to teach-in bidirectional actuators
+ e. g. EEP 4BS (RORG A5-20-XX),
+ see Bidirectional Teach-In / Teach-Out.
+ - reset
+ Reset the device
+ - repeater [0000|0101|0102]
+ Set Repeater Level: off = 0000, 1 = 0101, 2 = 0102.
+ - sleep <t/10 ms> (Range: 00000000 ... 00FFFFFF)
+ Enter the energy saving mode
+ - subtel [00|01]
+ Transmitting additional subtelegram info: Enable = 01, Disable = 00
+
+ For details see the EnOcean Serial Protocol 3 (ESP3) available from
+ www.enocean.com.
+
+
+
+
+ Get
+ TCM 120
+ - idbase
+ Get the BaseID. You need this command in order to control EnOcean devices,
+ see the EnOcean paragraph.
+
+ - modem_status
+ Requests the current modem status.
+ - sensitivity
+ Get the TCM radio sensitivity, low = 00, high = 01
+ - sw_ver
+ Read the device SW version / HW version, chip-ID, etc.
+
+ For details see the TCM 120 User Manual available from www.enocean.com.
+
+
+ TCM 310
+ - baseID
+ Get the BaseID. You need this command in order to control EnOcean devices,
+ see the EnOcean paragraph.
+ - numSecureDev
+ Read number of teached in secure devices.
+ - repeater
+ Read Repeater Level: off = 0000, 1 = 0101, 2 = 0102.
+ - version
+ Read the device SW version / HW version, chip-ID, etc.
+
+ For details see the EnOcean Serial Protocol 3 (ESP3) available from
+ www.enocean.com.
+
+
+
+
+ Attributes
+
+
+
+
+
+THRESHOLD
+
+ Diverse controls can be realized by means of the module by evaluation of sensor data.
+ In the simplest case, this module reads any sensor that provides values in decimal and execute FHEM/Perl commands, if the value of the sensor is higher or lower than the threshold value.
+ A typical application is the simulation of a thermostat or humidistat.
+
+ With one or more such modules, complex systems can be implemented for heating, cooling, ventilation, dehumidification or shading.
+ But even simple notification when crossing or falling below a specific value can be easily realized. It no if-statements in Perl or notify definitions need to be made.
+ This leads to quickly create and clear controls, without having to necessarily go into the Perl matter.
+ Some application examples are at the end of the module description.
+
+ According to the definition of a module type THRESHOLD eg:
+
+ define <name> THRESHOLD <sensor> <actor>
+
+ It is controlled by setting a desired value with:
+
+ set <name> desired <value>
+
+ The module begins with the control system only when a desired value is set!
+
+ The specification of the desired value may also come from another sensor. This control may take place by the comparison of two sensors.
+
+ Likewise, any wall thermostats can be used (eg, HM, MAX, FHT) for the definition of the reference temperature.
+
+ The switching behavior can also be influenced by another sensor or sensor group.
+
+ The combination of multiple THRESHOLD modules together is possible, see examples below.
+
+
+
+ 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
+ a defined sensor in FHEM
+
+
+ - reading (optional)
+ reading of the sensor, which includes a value in decimal
+ default value: temperature
+
+
+ - hysteresis (optional)
+ Hysteresis, this provides the threshold_min = desired_value - hysteresis
+ default value: 1 at temperature, 10 at huminity
+
+
+ - target_value (optional)
+ number: Initial value, if no value is specified, it must be set with "set desired value".
+ else:<sensorname>:<reading>, an additional sensor can be specified, which sets the target value dynamically.
+ default value: no value
+
+
+ - offset (optional)
+ Offset to desired value
+ This results:
+ threshold_max = desired_value + offset and threshold_min = desired_value - hysteresis + offset
+ Defaultwert: 0
+
+
+
+ - AND|OR (optional)
+ logical operator with an optional second sensor
+
+
+ - sensor2 (optional, nur in Verbindung mit AND oder OR)
+ the second sensor
+
+
+ - reading2 (optional)
+ reading of the second sensor
+ default value: state
+
+
+ - state (optional)
+ state of the second sensor
+ default value: open
+
+
+ - actor (optional)
+ actor device defined in FHEM
+
+
+ - cmd1_gt (optional)
+ FHEM/Perl command that is executed, if the value of the sensor is higher than desired value and/or the value of sensor 2 is matchted. @ is a placeholder for the specified actor.
+ default value: set actor off, if actor defined
+
+
+ - cmd2_lt (optional)
+ FHEM/Perl command that is executed, if the value of the sensor is lower than threshold_min or the value of sensor 2 is not matchted. @ is a placeholder for the specified actor.
+ default value: set actor on, if actor defined
+
+
+ - cmd_default_index (optional)
+ Index of command that is executed after setting the desired value until the desired value or threshold_min value is reached.
+ 0 - no command
+ 1 - cmd1_gt
+ 2 - cmd2_lt
+ default value: 2, if actor defined, else 0
+
+
+ - state_cmd1_gt (optional, is defined as an attribute at the same time and can be changed there)
+ state, which is displayed, if FHEM/Perl-command cmd1_gt was executed. If state_cmd1_gt state ist set, other states, such as active or deactivated are suppressed.
+
+ default value: none
+
+
+ - state_cmd2_lt (optional, is defined as an attribute at the same time and can be changed there)
+ state, which is displayed, if FHEM/Perl-command cmd1_gt was executed. If state_cmd1_gt state ist set, other states, such as active or deactivated are suppressed.
+
+ default value: none
+
+
+ - state_format (optional, is defined as an attribute at the same time and can be changed there)
+ Format of the state output: arbitrary text with placeholders.
+ Possible placeholders:
+ _m: mode
+ _dv: desired_value
+ _s1v: sensor_value
+ _s2s: sensor2_state
+ _sc: state_cmd
+ Default value: _m _dv _sc, _sc when state_cmd1_gt and state_cmd2_lt set without actor.
+
+
+ Examples:
+
+ Example for heating:
+
+ It is heated up to the desired value of 20. If the value below the threshold_min value of 19 (20-1)
+ the heating is switched on again.
+
+ define thermostat THRESHOLD temp_sens heating
+
+ set thermostat desired 20
+
+
+ Example for heating with window contact:
+
+ define thermostat THRESHOLD temp_sens OR win_sens heating
+
+
+ Example for heating with multiple window contacts:
+
+ define W_ALL structure W_type W1 W2 W3 ....
+ attr W_ALL clientstate_behavior relative
+ attr W_ALL clientstate_priority open closed
+
+ then:
+
+ define thermostat THRESHOLD S1 OR W_ALL heating
+
+
+ More examples for dehumidification, air conditioning, watering:
+
+ define hygrostat THRESHOLD hym_sens:humidity dehydrator|set @ on|set @ off|1
+ define hygrostat THRESHOLD hym_sens:humidity AND Sensor2:state:close 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:close aircon|set @ on|set @ off|1
+ define hygrostat THRESHOLD hym_sens:humidity:20 watering|set @ off|set @ on|2
+
+
+ It can also FHEM/perl command chains are specified:
+
+ Examples:
+
+ define thermostat THRESHOLD sensor |set Switch1 on;;set Switch2 on|set Switch1 off;;set Switch2 off|1
+ define thermostat THRESHOLD sensor alarm|{Log 2,"value is exceeded"}|set @ on;;set Switch2 on
+ define thermostat THRESHOLD sensor ||{Log 2,"value is reached"}|
+
+
+ Examples of the reference input by another sensor:
+
+ Hot water circulation: The return temperature is 5 degrees (offset) below the hot water tank temperature and can vary by up to 4 degrees (hysteresis).
+
+ define TH_water_circulation THRESHOLD return_w:temperature:4:water_storage:temperature:-5 circualtion_pump
+
+ Control of heating by a wall thermostat with acquisition the desired and actual temperature from the wall thermostat:
+
+ define TH_heating THRESHOLD WT:measured-temp:1:WT:desired-temp heating
+
+ set TH_heating desired 17 overrides the desired-values from the wall thermostat until called set TH_heating external
+
+
+ Examples of customized state output:
+
+ define thermostat THRESHOLD sensor aircon|set @ on|set @ off|2|on:off
+
+
+ Example of state output (eg for state evaluation in other modules) without executing code:
+
+ define thermostat THRESHOLD sensor:temperature:0:30
+
+ by reason of default values​​:
+
+ define thermostat THRESHOLD sensor:temperature:0:30||||off:on|_sc
+
+
+ Example of combining several THRESHOLD modules together:
+
+ It should be heated when the room temperature drops below 21 degrees and the outside temperature is below 15 degrees:
+
+ define TH_outdoor THRESHOLD outdoor:temperature:0:15
+ define TH_room THRESHOLD indoor OR TH_outdoor:state:off heating
+ set TH_room desired 21
+
+
+ An example of time-dependent heating in combination with Heating_Control module:
+
+ define TH_living_room THRESHOLD T_living_room heating
+ define HC_living_room Heating_Control TH_living_room 06:00|22 22:00|18 set @ desired %
+
+
+ Examples of customized state output:
+
+ State output: <mode> <state_cmd> <desired_value> <sensor_value>
+
+ define TH_living_room THRESHOLD T_living_room heating|set @ off|set @ on|2|off:on|_m _sc _dv _s1v
+
+ or
+
+ 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
+
+
+
+ Set
+
+ -
set <name> desired <value>
+ Set the desired value. If no desired value is set, the module is not active.
+
+
+ -
set <name> deactivated <value>
+ Module is disabled.
+
+
+ -
set <name> active <value>
+ Module is activated. If under target_value a sensor for reference input has been defined, the current setpoint will be inhibited until set "set external".
+
+
+ set <name> externel
+ Module is activated, reference input comes from the target sensor, if a sensor has been defined under target_value.
+
+
+ -
set <name> hysteresis <value>
+ Set hysteresis value.
+
+
+ set <name> offset <value>
+ Set offset value.
+ Defaultwert: 0
+
+
+ set <name> cmd1_gt
+ Executes the command defined in cmd1_gt.
+
+
+ set <name> cmd2_lt
+ Executes the command defined in cmd2_lt.
+
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+
+
+
+THZ
+
+ THZ module: comunicate through serial interface RS232/USB (eg /dev/ttyxx) or through ser2net (e.g 10.0.x.x:5555) with a Tecalor/Stiebel Eltron heatpump.
+ Tested on a THZ303/Sol (with serial speed 57600/115200@USB) and a THZ403 (with serial speed 115200) with the same Firmware 4.39.
+ Tested on a LWZ404 (with serial speed 115200) with Firmware 5.39.
+ Tested on fritzbox, nas-qnap, raspi and macos.
+ This module is not working if you have an older firmware; Nevertheless, "parsing" could be easily updated, because now the registers are well described.
+ https://answers.launchpad.net/heatpumpmonitor/+question/100347
+ Implemented: read of status parameters and read/write of configuration parameters.
+
+
+
+ Define
+
+ define <name> THZ <device>
+
+ device can take the same parameters (@baudrate, @directio,
+ TCP/IP, none) like the CUL, e.g 57600 baud or 115200.
+ Example:
+ direct connection
+
+ define Mytecalor THZ /dev/ttyUSB0@115200
+
+ or network connection (like via ser2net)
+
+ define Myremotetecalor THZ 192.168.0.244:2323
+
+
+
+ define Mythz THZ /dev/ttyUSB0@115200
+ attr Mythz interval_allFB 300 # internal polling interval 5min
+ attr Mythz interval_history 28800 # internal polling interval 8h
+ attr Mythz interval_last10errors 86400 # internal polling interval 24h
+ define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz
+
+
+ If the attributes interval_allFB and interval_history are not defined (or 0), their internal polling is disabled.
+ Clearly you can also define the polling interval outside the module with the "at" command.
+
+
+ define Mythz THZ /dev/ttyUSB0@115200
+ define atMythzFB at +*00:05:00 {fhem "get Mythz allFB","1";;return()}
+ define atMythz09 at +*08:00:00 {fhem "get Mythz history","1";;return()}
+ define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz
+
+
+
+
+
+
+
+TRX
+
+
+
+ This module is for the RFXCOM RFXtrx433 USB based 433 Mhz RF transmitters.
+This USB based transmitter is able to receive and transmit many protocols like Oregon Scientific weather sensors, X10 security and lighting devices, ARC ((address code wheels) HomeEasy, KlikAanKlikUit, ByeByeStandBy, Intertechno, ELRO,
+AB600, Duewi, DomiaLite, COCO) and others.
+ Currently the following parser modules are implemented:
+
+ - 46_TRX_WEATHER.pm (see device TRX): Process messages Oregon Scientific weather sensors.
+ See http://www.rfxcom.com/oregon.htm for a list of
+ Oregon Scientific weather sensors that could be received by the RFXtrx433 tranmitter.
+ Until now the following Oregon Scientific weather sensors have been tested successfully: BTHR918, BTHR918N, PCR800, RGR918, THGR228N, THGR810, THR128, THWR288A, WTGR800, WGR918. It will also work with many other Oregon sensors supported by RFXtrx433. Please give feedback if you use other sensors.
+
+ - 46_TRX_SECURITY.pm (see device TRX_SECURITY): Receive X10, KD101 and Visonic security sensors.
+ - 46_TRX_LIGHT.pm (see device RFXX10REC): Process X10, ARC, ELRO AB400D, Waveman, Chacon EMW200, IMPULS, RisingSun, Philips SBC, AC, HomeEasy EU and ANSLUT lighting devices (switches and remote control). ARC is a protocol used by devices from HomeEasy, KlikAanKlikUit, ByeByeStandBy, Intertechno, ELRO, AB600, Duewi, DomiaLite and COCO with address code wheels. AC is the protocol used by different brands with units having a learning mode button:
+KlikAanKlikUit, NEXA, CHACON, HomeEasy UK.
+
+
+ Note: this module requires the Device::SerialPort or Win32::SerialPort module
+ if the devices is connected via USB or a serial port.
+
+
+ Define
+
+ define <name> TRX <device> [noinit]
+
+
+ USB-connected:
+ <device> specifies the USB port to communicate with the RFXtrx433 receiver.
+ Normally on Linux the device will be named /dev/ttyUSBx, where x is a number.
+ For example /dev/ttyUSB0. Please note that RFXtrx433 normally operates at 38400 baud. You may specify the baudrate used after the @ char.
+
+ Example:
+ define RFXTRXUSB TRX /dev/ttyUSB0@38400
+
+
+
+ Network-connected devices:
+
+ <device> specifies the host:port of the device. E.g.
+ 192.168.1.5:10001
+
+
+ noninit is optional and issues that the RFXtrx433 device should not be
+ initialized. This is useful if you share a RFXtrx433 device via LAN. It is
+ also useful for testing to simulate a RFXtrx433 receiver via netcat or via
+ FHEM2FHEM.
+
+
+
+ Example:
+ define RFXTRXTCP TRX 192.168.1.5:10001
+
+ define RFXTRXTCP2 TRX 192.168.1.121:10001 noinit
+
+
+
+ |
+
+
+ Attributes
+
+ - dummy
+ - longids
+ Comma separated list of device-types for TRX_WEATHER that should be handled using long IDs. This additional ID is a one byte hex string and is generated by the Oregon sensor when is it powered on. The value seems to be randomly generated. This has the advantage that you may use more than one Oregon sensor of the same type even if it has no switch to set a sensor id. For example the author uses two BTHR918N sensors at the same time. All have different deviceids. The drawback is that the deviceid changes after changing batteries. All devices listed as longids will get an additional one byte hex string appended to the device name.
+Default is to use no long IDs.
+
+ Examples:
+# Do not use any long IDs for any devices (this is default):
+attr RFXCOMUSB longids 0
+# Use long IDs for all devices:
+attr RFXCOMUSB longids 1
+# Use longids for BTHR918N devices.
+# Will generate devices names like BTHR918N_f3.
+attr RFXTRXUSB longids BTHR918N
+# Use longids for TX3_T and TX3_H devices.
+# Will generate devices names like TX3_T_07, TX3_T_01 ,TX3_H_07.
+attr RFXTRXUSB longids TX3_T,TX3_H
+
+ - rssi
+ 1: enable RSSI logging, 0: disable RSSI logging
+Default is no RSSI logging.
+
+ Examples:
+# Do log rssi values (this is default):
+attr RFXCOMUSB rssi 0
+# Enable rssi logging for devices:
+attr RFXCOMUSB rssi 1
+
+
+
+
+
+
+TRX_ELSE
+
+ The TRX_ELSE module is invoked by TRX if a code is received by RFXCOM RFXtrx433 RF receiver that is currently not handled by a TRX_-Module. You need to define an RFXtrx433 receiver first.
+See TRX.
+
+
+
+ Define
+
+ define <name> TRX_ELSE <hextype>
+
+ <hextype>
+
+ specifies the hexvalue (00 - ff) of the type received by the RFXtrx433 transceiver.
+
+
+ Example:
+ define TRX_UNKNOWN_9A TRX_ELSE 9A
+
+
+
+
+
+
+TRX_LIGHT
+
+ The TRX_LIGHT module receives and sends X10, ARC, ELRO AB400D, Waveman, Chacon EMW200, IMPULS, RisingSun, AC, HomeEasy EU and ANSLUT lighting devices (switches and remote control). Allows to send Philips SBC (receive not possible). ARC is a protocol used by devices from HomeEasy, KlikAanKlikUit, ByeByeStandBy, Intertechno, ELRO, AB600, Duewi, DomiaLite and COCO with address code wheels. AC is the protocol used by different brands with units having a learning mode button:
+KlikAanKlikUit, NEXA, CHACON, HomeEasy UK. You need to define an RFXtrx433 transceiver receiver first.
+ See TRX.
+
+
+
+
+ Define
+
+ define <name> TRX_LIGHT <type> <deviceid> <devicelog> [<deviceid2> <devicelog2>]
+ define <name> TRX_LIGHT PT2262 <deviceid> <devicelog> <commandcodes>
+
+ <type>
+
+ specifies the type of the device:
+ X10 lighting devices:
+
+ -
MS14A (X10 motion sensor. Reports [normal|alert] on the first deviceid (motion sensor) and [on|off] for the second deviceid (light sensor))
+ -
X10 (All other x10 devices. Report [off|on|dim|bright|all_off|all_on] on both deviceids.)
+ -
ARC (ARC devices. ARC is a protocol used by devices from HomeEasy, KlikAanKlikUit, ByeByeStandBy, Intertechno, ELRO, AB600, Duewi, DomiaLite and COCO with address code wheels. Report [off|on|all_off|all_on|chime].)
+ -
AB400D (ELRO AB400D devices. Report [off|on].)
+ -
WAVEMAN (Waveman devices. Report [off|on].)
+ -
EMW200 (Chacon EMW200 devices. Report [off|on|all_off|all_on].)
+ -
IMPULS (IMPULS devices. Report [off|on].)
+ -
RISINGSUN (RisingSun devices. Report [off|on].)
+ -
PHILIPS_SBC (Philips SBC devices. Send [off|on|all_off|all_on].)
+ -
AC (AC devices. AC is the protocol used by different brands with units having a learning mode button: KlikAanKlikUit, NEXA, CHACON, HomeEasy UK. Report [off|on|level <NUM>|all_off|all_on|all_level <NUM>].)
+ -
HOMEEASY (HomeEasy EU devices. Report [off|on|level|all_off|all_on|all_level].)
+ -
ANSLUT (Anslut devices. Report [off|on|level|all_off|all_on|all_level].)
+ -
PT2262 (Devices using PT2262/PT2272 (coder/decoder) chip. To use this enable Lighting4 in RFXmngr. Please note that this disables ARC. For more information see FHEM-Wiki
+)
+
+
+
+ <deviceid>
+
+ specifies the first device id of the device.
+ A lighting device normally has a house code A..P followed by a unitcode 1..16 (example "B1").
+ For AC, HomeEasy EU and ANSLUT it is a 10 Character-Hex-String for the deviceid, consisting of
+ - unid-id: 8-Char-Hex: 00000001 to 03FFFFFF
+ - unit-code: 2-Char-Hex: 01 to 10
+
+
+ <devicelog>
+
+ is the name of the Reading used to report. Suggested: "motion" for motion sensors. If you use "none" then no additional Reading is reported. Just the state is used to report the change.
+
+
+ <deviceid2>
+
+ is optional and specifies the second device id of the device if it exists. For example ms14a motion sensors report motion status on the first deviceid and the status of the light sensor on the second deviceid.
+
+
+ <devicelog2>
+
+ is optional for the name used for the Reading of <deviceid2> .If you use "none" then no addional Reading is reported. Just the state is used to report the change.
+
+
+ <commandcodes>
+
+ is used for PT2262 and specifies the possible base4 digits for the command separated by : and a string that specifies a string that is the command. Example '0:off,1:on '.
+
+
+ Example:
+ define motion_sensor2 TRX_LIGHT MS14A A1 motion A2 light
+
+ define Steckdose TRX_LIGHT ARC G2 light
+
+ define light TRX_LIGHT AC 0101010101 light
+
+
+
+
+
+ Set
+
+ set <name> <value> [<levelnum>]
+
+ where value is one of:
+
+ off
+ on
+ dim # only for X10, KOPPLA
+ bright # only for X10, KOPPLA
+ all_off # only for X10, ARC, EMW200, AC, HOMEEASY, ANSLUT
+ all_on # only for X10, ARC, EMW200, AC, HOMEEASY, ANSLUT
+ chime # only for ARC
+ level <levelnum> # only AC, HOMEEASY, ANSLUT: set level to <levelnum> (range: 0=0% to 15=100%)
+ on-till # Special, see the note
+ on-for-timer # Special, see the note
+
+ Example:
+ set Steckdose on
+
+
+ Notes:
+
+ on-till requires an absolute time in the "at" format
+ (HH:MM:SS, HH:MM) or { <perl code> }, where the perl code
+ returns a time specification).
+ If the current time is greater than the specified time, then the
+ command is ignored, else an "on" command is generated, and for the
+ given "till-time" an off command is scheduleld via the at command.
+
+ on-for-timer requires a relative time in the "at" format
+ (HH:MM:SS, HH:MM) or { <perl code> }, where the perl code
+ returns a time specification).
+
+
+
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+TRX_SECURITY
+
+ The TRX_SECURITY module interprets X10, KD101 and Visonic security sensors received by a RFXCOM RFXtrx433 RF receiver. You need to define an RFXtrx433 receiver first. See TRX.
+
+
+
+
+ Define
+
+ define <name> TRX_SECURITY <type> <deviceid> <devicelog> [<deviceid2> <devicelog2>]
+
+ <type>
+
+ specifies one of the following security devices:
+
+ -
DS10A (X10 security ds10a Door/Window Sensor or compatible devices. This device type reports the status of the switch [Open/Closed], status of the delay switch [min|max]], and battery status [ok|low].)
+ -
MS10A (X10 security ms10a motion sensor. This device type reports the status of motion sensor [normal|alert] and battery status [ok|low].))
+ -
SD90 (Marmitek sd90 smoke detector. This device type reports the status of the smoke detector [normal|alert] and battery status [ok|low].)
+ -
KR18 (X10 security remote control. Report the Reading "Security" with values [Arm|Disarm], "ButtonA" and "ButtonB" with values [on|off] )
+ -
KD101 (KD101 smoke sensor. Report the Reading "smoke" with values [normal|alert])
+ -
VISONIC_WINDOW (VISONIC security Door/Window Sensor or compatible devices. This device type reports the status of the switch [Open/Closed] and battery status [ok|low].)
+ -
VISONIC_MOTION (VISONIC security motion sensor. This device type reports the status of motion sensor [normal|alert] and battery status [ok|low].))
+
+
+
+ <deviceid>
+
+ specifies the first device id of the device. X10 security (DS10A, MS10A) and SD90 have a a 16 bit device id which has to be written as a hex-string (example "5a54"). All other devices have a 24 bit device id.
+
+
+ <devicelog>
+
+ is the name of the Reading used to report. Suggested: "Window" or "Door" for ds10a, "motion" for motion sensors, "smoke" for sd90. If you use "none" then no additional Reading is reported. Just the state is used to report the change.
+
+
+ <deviceid2>
+
+ is optional and specifies the second device id of the device if it exists. For example sd90 smoke sensors can be configured to report two device ids.
+
+
+ <devicelog2>
+
+ is optional for the name used for the Reading of <deviceid2> . If you use "none" then no additional Reading is reported. Just the state is used to report the change.
+
+
+ Example:
+ define livingroom_window TRX_SECURITY ds10a 72cd Window
+
+ define motion_sensor1 TRX_SECURITY ms10a 55c6 motion
+
+ define smoke_sensor1 TRX_SECURITY sd90 54d3 Smoke 54d3 Smoketest
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ alert # only for KD101
+ pair # only for KD101
+
+ Example:
+ set TRX_KD101_a5ca00 alert
+
+
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+TRX_WEATHER
+
+ The TRX_WEATHER module interprets weather sensor messages received by a RTXtrx receiver. See http://www.rfxcom.com/oregon.htm for a list of
+ Oregon Scientific weather sensors that could be received by the RFXtrx433 tranmitter. You need to define a RFXtrx433 receiver first. See
+ See TRX.
+
+
+
+
+ Define
+
+ define <name> TRX_WEATHER <deviceid>
+
+ <deviceid>
+
+ is the device identifier of the sensor. It consists of the sensors name and (only if the attribute longids is set of the RFXtrx433) an a one byte hex string (00-ff) that identifies the sensor. If an sensor uses an switch to set an additional is then this is also added. The define statement with the deviceid is generated automatically by autocreate. The following sensor names are used:
+ "THR128" (for THR128/138, THC138),
+ "THGR132N" (for THC238/268,THN132,THWR288,THRN122,THN122,AW129/131),
+ "THWR800",
+ "RTHN318",
+ "TX3_T" (for LaCrosse TX3, TX4, TX17),
+ "THGR228N" (for THGN122/123, THGN132, THGR122/228/238/268),
+ "THGR810",
+ "RTGR328",
+ "THGR328",
+ "WTGR800_T" (for temperature of WTGR800),
+ "THGR918" (for THGR918, THGRN228, THGN500),
+ "TFATS34C" (for TFA TS34C),
+ "BTHR918",
+ "BTHR918N (for BTHR918N, BTHR968),
+ "RGR918" (for RGR126/682/918),
+ "PCR800",
+ "TFA_RAIN" (for TFA rain sensor),
+ "WTGR800_A" (for wind sensor of WTGR800),
+ "WGR800" (for wind sensor of WGR800),
+ "WGR918" (for wind sensor of STR918 and WGR918),
+ "TFA_WIND" (for TFA wind sensor),
+ "BWR101" (for Oregon Scientific BWR101),
+ "GR101" (for Oregon Scientific GR101)
+
+
+ Example:
+
+ define Tempsensor TRX_WEATHER TX3_T
+ define Tempsensor3 TRX_WEATHER THR128_3
+ define Windsensor TRX_WEATHER WGR918_A
+ define Regensensor TRX_WEATHER RGR918
+
+
+
+
+ define <name> TRX_WEATHER <deviceid> [<scale_current> <scale_total> <add_total>]
+
+ <deviceid>
+
+ is the device identifier of the energy sensor. It consists of the sensors name and (only if the attribute longids is set of the RFXtrx433) an a two byte hex string (0000-ffff) that identifies the sensor. The define statement with the deviceid is generated automatically by autocreate. The following sensor names are used:
+ "CM160" (for OWL CM119 or CM160),
+ "CM180" (for OWL CM180),
+ "CM180i"(for OWL CM180i),
+
+ The following Readings are generated:
+
+ "energy_current:" :
+
+ Only for CM160 and CM180: current usage in Watt. If <scale_current> is defined the result is: energy_current * <scale_current> .
+
+ "energy_chx:" :
+
+ Only for CM180i (where chx is ch1, ch2 or ch3): current usage in Ampere. If <scale_current> is defined the result is: energy_chx * <scale_current> .
+
+ "energy_total:" :
+
+ current usage in kWh. If scale_total and add_total is defined the result is: energy_total * <scale_total> + <add_total> .
+
+
+
+ Example:
+
+ define Tempsensor TRX_WEATHER CM160_1401
+ define Tempsensor TRX_WEATHER CM180_1401 1 1 0
+ define Tempsensor TRX_WEATHER CM180_1401 0.9 0.9 -1000
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+
+
+TUL
+
+
+
+
+ The TUL module is the representation of a EIB / KNX connector in FHEM.
+ EIB instances represent the EIB / KNX devices and will need a TUL as IODev to communicate with the EIB / KNX network.
+ The TUL module is designed to connect to EIB network either using EIBD or the TUL usb stick created by busware.de
+
+ Note: this module may require the Device::SerialPort or Win32::SerialPort
+ module if you attach the device via USB and the OS sets strange default
+ parameters for serial devices.
+
+ |
+
+ |
+
+
+
+ Define
+
+ define <name> TUL <device> <physical address>
+
+ TUL usb stick / TPUART serial devices:
+ <device> specifies the serial port to communicate with the TUL.
+ The name of the serial-device depends on your distribution, under
+ linux the cdc_acm kernel module is responsible, and usually a
+ /dev/ttyACM0 device will be created. If your distribution does not have a
+ cdc_acm module, you can force usbserial to handle the TUL by the
+ following command:modprobe usbserial vendor=0x03eb
+ product=0x204b In this case the device is most probably
+ /dev/ttyUSB0.
+
+ You can also specify a baudrate if the device name contains the @
+ character, e.g.: /dev/ttyACM0@19200
+ Note: For TUL usb stick the baudrate 19200 is needed and this is the default
+ when no baudrate is given.
+
+
+ Example:
+ define tul TUL tul:/dev/ttyACM0 1.1.249
+
+ EIBD:
+ <device> specifies the host:port of the eibd device. E.g.
+ eibd:192.168.0.244:2323. When using the standard port, the port can be omitted.
+
+
+ Example:
+ define tul TUL eibd:localhost 1.1.249
+
+
+ If the device is called none, then no device will be opened, so you
+ can experiment without hardware attached.
+
+ The physical address is used as the source address of telegrams sent to EIB network.
+
+
+
+
+ Set
+
+ - raw
+ Issue a TUL raw telegram message
+
+
+
+
+ Get
+
+ - raw
+ sends a read telegram
+
+
+
+
+ Attributes
+
+
+
+
+
+TellStick
+
+
+
+
+ Define
+
+ define <name> TellStick </path/to/tdtool>
+
+
+
+
+ Defines a path to the program "tdtool", which is used to control a (locally attached)
+ "Telldus TellStick [Duo]" USB device. A TellStick controls a wide range of 433 MHz
+ devices, like the widely available switchable power outlets from InterTechno.
+ To keep things simple, FHEM interfaces with the telldus-core suite (available
+ for Linux, Windows, Mac OSX) via the supplied tool, "tdtool". This FHEM module
+ will initially use "tdtool --list" to receive a list of configured devices, then let
+ autocreate (if enabled) create them as SIS_PMS devices.
+ Please make sure that the user running FHEM under ("fhem" in a standard setup on
+ Linux) has the r/w-right to access the stick's device ("/dev/tellstick"
+ in telldus-core version 2.0) — if the state of your devices do not change when
+ modified im FHEM, access rights problems are the most probable cause
+ ( chmod o+rw /dev/tellstick should fix that; you may want to automate it
+ via udev or adding the fhem user to the proper group ;))
+ This module has only been tested with the 2.0 branch of teldus-core because of a known bug
+ in 2.1, preventing
+ version 2.1 working properly with some TellSticks and/or "tdtool" application; FTR, the
+ "Batch: 8" version a was granted usage of for writing this module was impacted by it ...
+
+ To actually control any power sockets, you need to define a SIS_PMS
+ device — TellStick.pm uses SIS_PMS devices ("socket" is te:ll:st:ck:01, "socketnr"
+ is the ID of the device in "tdtool"), as as of now only on/off switching is supported and
+ this was the easiest implementation path. SIS_PMS is supported by andFHEM, the Android
+ frontend, so this make some sense. (Furthermore, I don't own dimmable devices and they are
+ actually not really cheap; >15 EUR/socket compared to the 15 EUR for 5 switch-only, non-self
+ learning socket adapters from Intertechno at your local home improvement store.)
+
+
+ Example:
+
+ define TStick TellStick /usr/bin/tdtool
+ define Deckenfluter SIS_PMS te:ll:st:ck:01 2
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+
+ Text2Speech
+
+
+
+ Set
+
+ - tts:
+ Giving a text to translate into audio.
+
+ - volume:
+ Setting up the volume audio response.
+ Notice: Only available in locally instances!
+
+
+
+
+ Get
+
+
+
+ Attributes
+
+ - TTS_Delemiter
+ optional: By using the google engine, its not possible to convert more than 100 characters in a single audio brick.
+ With a delemiter the audio brick will be split at this character. A delemiter must be a single character.!
+ By default, ech audio brick will be split at sentence end. Is a single sentence longer than 100 characters,
+ the sentence will be split additionally at comma, semicolon and the word and.
+ Notice: Only available in locally instances with Google engine!
+
+
+ - TTS_Ressource
+ optional: Selection of the Translator Engine
+ Notice: Only available in locally instances!
+
+ - Google
+ Using the Google Engine. It´s nessessary to have internet access. This engine is the recommend engine
+ because the quality is fantastic. This engine is using by default.
+
+ - ESpeak
+ Using the ESpeak Engine. Installation of the espeak sourcen is required.
+ apt-get install espeak
+
+
+
+
+ - TTS_CacheFileDir
+ optional: The downloaded Goole audio bricks are saved in this folder for reusing.
+ No automatically implemented deleting are available.
+ Default: cache/
+ Notice: Only available in locally instances!
+
+
+ - TTS_UseMP3Wrap
+ optional: To become a liquid audio response its recommend to use the tool mp3wrap.
+ Each downloaded audio bricks are concatinated to a single audio file to play with mplayer.
+ Installtion of the mp3wrap source is required.
+ apt-get install mp3wrap
+ Notice: Only available in locally instances!
+
+
+ - TTS_MplayerCall
+ optional: Setting up the Mplayer system call. The following example is default.
+ Example: sudo /usr/bin/mplayer
+
+
+ - TTS_SentenceAppendix
+ Optional: Definition of one mp3-file to append each time of audio response.
+ Using of Mp3Wrap is required. The audio bricks has to be downloaded before into CacheFileDir.
+ Example: silence.mp3
+
+
+ - TTS_FileMapping
+ Definition of mp3files with a custom templatedefinition. Separated by space.
+ All templatedefinitions can used in audiobricks by i>tts.
+ The definition must begin and end with e colon.
+ The mp3files must saved in the given directory by TTS_FIleTemplateDir.
+ attr myTTS TTS_FileMapping ring:ringtone.mp3 beep:MyBeep.mp3
+ set MyTTS tts Attention: This is my ringtone :ring: Its loud?
+
+
+ - TTS_FileTemplateDir
+ Directory to save all mp3-files are defined in TTS_FileMapping und TTS_SentenceAppendix
+ Optional, Default: cache/templates
+
+
+ - readingFnAttributes
+
+ - disable
+ If this attribute is activated, the soundoutput will be disabled.
+ Possible values: 0 => not disabled , 1 => disabled
+ Default Value is 0 (not disabled)
+
+
+ - verbose
+ 4: each step will be logged
+ 5: Additionally the individual debug informations from mplayer and mp3wrap will be logged
+
+
+
+
+
+ Twilight
+
+
+
+
+ Define
+
+ define <name> Twilight <latitude> <longitude> [<indoor_horizon> [<Weather_Position>]]
+
+ Defines a virtual device for Twilight calculations
+
+ latitude, longitude
+
+ The parameters latitude and longitude are decimal numbers which give the position on earth for which the twilight states shall be calculated.
+
+ indoor_horizon
+
+ The parameter indoor_horizon gives a virtual horizon higher than 0, that shall be used for calculation of indoor twilight (typical values are between 0 and 6)
+
+ Weather_Position
+
+ The parameter Weather_Position is the yahoo weather id used for getting the weather condition. Go to http://weather.yahoo.com/ and enter a city or zip code. In the upcoming webpage, the id is a the end of the URL. Example: Munich, Germany -> 676757
+
+
+ A Twilight device periodically calculates the times of different twilight phases throughout the day.
+ It calculates a virtual "light" element, that gives an indicator about the amount of the current daylight.
+ Besides the location on earth it is influenced by a so called "indoor horizon" (e.g. if there are high buildings, mountains) as well as by weather conditions. Very bad weather conditions lead to a reduced daylight for nearly the whole day.
+ The light calculated spans between 0 and 6, where the values mean the following:
+
+ light
+
+ 0 - total night, sun is at least -18 degree below horizon
+ 1 - astronomical twilight, sun is between -12 and -18 degree below horizon
+ 2 - nautical twilight, sun is between -6 and -12 degree below horizon
+ 3 - civil twilight, sun is between 0 and -6 degree below horizon
+ 4 - indoor twilight, sun is between the indoor_horizon and 0 degree below horizon (not used if indoor_horizon=0)
+ 5 - weather twilight, sun is between indoor_horizon and a virtual weather horizon (the weather horizon depends on weather conditions (optional)
+ 6 - maximum daylight
+
+ Azimut, Elevation, Twilight
+
+ The module calculates additionally the azimuth and the elevation of the sun. The values can be used to control a roller shutter.
+
+ As a new (twi)light value the reading Twilight ist added. It is derived from the elevation of the sun with the formula: (Elevation+12)/18 * 100). The value allows a more detailed
+ control of any lamp during the sunrise/sunset phase. The value ist betwenn 0% and 100% when the elevation is between -12° and 6°.
+
+ You must know, that depending on the latitude, the sun will not reach any elevation. In june/july the sun never falls in middle europe
+ below -18°. In more northern countries(norway ...) the sun may not go below 0°.
+
+ Any control depending on the value of Twilight must
+ consider these aspects.
+
+
+ Example:
+
+ define myTwilight Twilight 49.962529 10.324845 3 676757
+
+
+
+
+
+ Set
+
+
+
+
+
+ Get
+
+
+ get <name> <reading>
+
+ light | the current virtual daylight value |
+ nextEvent | the name of the next event |
+ nextEventTime | the time when the next event will probably happen (during light phase 5 and 6 this is updated when weather conditions change |
+ sr_astro | time of astronomical sunrise |
+ sr_naut | time of nautical sunrise |
+ sr_civil | time of civil sunrise |
+ sr | time of sunrise |
+ sr_indoor | time of indoor sunrise |
+ sr_weather | time of weather sunrise |
+ ss_weather | time of weather sunset |
+ ss_indoor | time of indoor sunset |
+ ss | time of sunset |
+ ss_civil | time of civil sunset |
+ ss_nautic | time of nautic sunset |
+ ss_astro | time of astro sunset |
+ azimuth | the current azimuth of the sun 0° ist north 180° is south |
+ compasspoint | a textual representation of the compass point |
+ elevation | the elevaltion of the sun |
+ twilight | a percetal value of a new (twi)light value: (elevation+12)/18 * 100) |
+ twilight_weather | a percetal value of a new (twi)light value: (elevation-WEATHER_HORIZON+12)/18 * 100). So if there is weather, it
+ is always a little bit darker than by fair weather |
+ condition | the yahoo condition weather code |
+ condition_txt | the yahoo condition weather code as textual representation |
+ horizon | value auf the actual horizon 0°, -6°, -12°, -18° |
+
+
+
+
+
+
+ Attributes
+
+
+
+
+ Functions
+
+ - twilight($twilight, $reading, $min, $max)
- implements a routine to compute the twilighttimes like sunrise with min max values.
+
+ $twilight | name of the twilight instance |
+ $reading | name of the reading to use example: ss_astro, ss_weather ... |
+ $min | parameter min time - optional |
+ $max | parameter max time - optional |
+
+
+
+
+
+
+
+ UNIRoll
+
+ The protocol is used by the Lott UNIROLL R-23700 reciever. The radio
+ (868.35 MHz) messages are either received through an FHZ
+ or an CUL device, so this must be defined first.
+ Recieving sender messages is not integrated jet.
+ The CUL has to allow working with zero synchbits at the beginning of a raw-message.
+ This is possible with culfw 1.49 or higher.
+
+
+
+ Define
+
+ define <name> UNIRoll <devicegroup> <deviceaddress>
+
+
+ The values of devicegroup address (similar to the housecode) and device address (button)
+ has to be defined as hexadecimal value.
+ There is no master or group code integrated.
+
+
+
+ <devicecode> is a 4 digit hex number,
+ corresponding to the housecode address.
+ <channel> is a 1 digit hex number,
+ corresponding to a button of the transmitter.
+
+
+
+ Example:
+
+ define roll UNIRoll 7777 0
+
+
+
+
+
+ Set
+
+ set <name> <value> [<time>]
+
+ where value is one of:
+
+ up
+ stop
+ down
+ pos (The attribute useRolloPos has to be set to 1 to use this.)
+ [<time>] in seconds for up, down or pos
+
+ Examples:
+
+ set roll up
+ set roll up 10
+ set roll1,roll2,roll3 up
+ set roll1-roll3 up
+
+
+
+ Get
+
+
+ Attributes
+
+
+ - IODev
+ Set the IO or physical device which should be used for sending signals
+ for this "logical" device. An example for the physical device is an FHZ
+ or a CUL. The device will not work without this entry.
+
+
+ - eventMap
+ Replace event names and set arguments. The value of this attribute
+ consists of a list of space separated values, each value is a colon
+ separated pair. The first part specifies the "old" value, the second
+ the new/desired value. If the first character is slash(/) or komma(,)
+ then split not by space but by this character, enabling to embed spaces.
+ Examples:
+ attr device eventMap up:open down:closed
+ set device open
+
+
+
+ - showtime
+
+
+ - sendStopBeforeCmd <value>
+ Before any up/down-command a stop-command will be sent to stop a random
+ operation. This might cause failure in some situations. This attribute
+ can be used to switch off the stop-command by setting it to these values.
+ where value is one of:
+
+ 1 - send always stop (default)
+ 0 - send no stop
+ 2 - send stop only before up
+ 3 - send stop only before down
+
+
+
+ - useRolloPos <value>
+ The position of each device can be stored. By this it is possible to move from
+ any position to any other position. As this feature is software-based, a
+ manual operation will not be recognized. To set the device into a definite
+ state, a up or down command will reset the counter for the position.
+ where value is one of:
+
+ 1 - RolloPos will be used
+ 0 - RolloPos is not used (default)
+
+ These attributes will be created automatical if useRolloPos is set to 1.
+ They will not be deleted, if the value is set to 0 or the attribut is deleted.
+
+ rMin - Time in seconds for the topmost position
+ rMax - Time in seconds until the device is fully closed
+ rPos - This is an internal value and must not be changed!
+
+
+
+ - model
+ The model attribute denotes the model type of the device.
+ The attributes will (currently) not be used by the fhem.pl directly.
+ It can be used by e.g. external programs or web interfaces to
+ distinguish classes of devices and send the appropriate commands.
+ The spelling of the model names are as quoted on the printed
+ documentation which comes which each device. This name is used
+ without blanks in all lower-case letters. Valid characters should be
+ a-z 0-9 and - (dash),
+ other characters should be ommited. Here is a list of "official"
+ devices:
+
+ Receiver/Actor: there is only one reciever: R_23700
+
+
+
+
+
+
+
+
+ USBWX
+
+ The USBWX module interprets the messages received by the ELV USB-WDE1
+ weather receiver. This receiver is compaptible with the following ELV sensors:
+ KS200/KS300, S300IA, S300TH, ASH2200, PS50. It also known to work with Conrad
+ weather sensors KS555, S555TH and ASH555. This module was tested with ELV
+ S300TH, ELV ASH2200, ELV KS300, Conrad S555TH and Conrad KS555. Readings
+ and STATE of temperature/humidity sensors are compatible with the CUL_WS
+ module. For KS300/KS555 sensors STATE is compatible with the KS300 module. The
+ module is integrated into autocreate to generate the appropriate filelogs and
+ weblinks automatically.
+
+ Note: this module requires the Device::SerialPort or Win32::SerialPort module
+ if the devices is connected via USB or a serial port.
+
+
+
+ Define
+
+ define <name> USBWX <serial device>
+
+ Defines USB-WDE1 attached via usb.
+
+ define <name> USBWX <code> [corr1...corr4]
+
+ <code> is the code which must be set on the sensor. Valid values
+ are 1 through 8. 9 is used as the sensor id of the ks300 sensor.
+ corr1..corr4 are up to 4 numerical correction factors, which will be added
+ to the respective value to calibrate the device. Note: rain-values will be
+ multiplied and not added to the correction factor.
+
+
+ Example:
+ define USBWDE1 USBWX /dev/ttyUSB0
+ define USBWX_1 USBWX 1
+ define USBWX_livingroom USBWX 2
+ define USBWX_ks300 USBWX 9
+
+
+
+
+ Set
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+ USF1000
+
+ Fhem can receive your tank's fill level from the USF1000S device
+ through a FHZ device, so one must be defined first.
+ The state contains the fill level in % (lower case v in the device state)
+ and the current volume in liters (upper case V in the device state).
+ Measured distance to the liquid's surface, fill level, volume and warnings
+ (Test mode, Battery low) are available. Due to the design of the USF1000S
+ protocol, you can have only one USF1000S in range of your FHZ as these
+ devices cannot be distinguished.
+
+
+
+ Define
+
+ define <name> USF1000 <geometry>
+
+
+ <geometry> determines the form of the tank and the
+ position of the sensor. The following geometries are currently
+ supported:
+
+ cub <length> <width> <height> <offset>
+ cylv <diameter> <height> <offset>
+
+
+ cub stands for a cuboid whose base is <length> × <width>.
+ cylv stands for a vertical cylinder whose diameter is <diameter>.
+ <height> is the distance of the surface of the liquid from the ground
+ if the tank is full. <offset> is the distance of the sensor relative to
+ the surface of the liquid. All quantities are expressed in meters.
+
+
+ Example:
+
+ define MyTank USF1000 cylv 2 1 0.3 : a cylindrical water tank with
+ 2 meters diameter. The water stands 1 meter high if the tank is full. The
+ sensor is fixed 1,3 meters above ground.
+
+
+
+
+
+ Set
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+
+
+
+
+ Utils
+
+
+ This is a collection of functions that can be used module-independant in all your own development
+
+
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# IMPORTANT: do not insert your own functions inside
+# the file 99_Utils.pm!
+#
+# This file will be overwritten during an FHEM update and all
+# your own inserts will be lost.
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+# To avoid this, we recommend following procedure:
+#
+# 1. Create your own file 99_myUtils.pm from the template below
+# 2. Put this file inside the ./FHEM directory
+# 3. Put your own functions into this new file
+#
+
+
+# start-of-template
+package main;
+
+use strict;
+use warnings;
+use POSIX;
+
+sub
+myUtils_Initialize($$)
+{
+ my ($hash) = @_;
+}
+
+# start with your own functions below this line
+
+
+# behind your last function, we need the following
+1;
+# end-of-template
+
+
+
+ Defined functions
+
+ - abstime2rel()
???
+ - ltrim()
returns string without leading spaces
+ - max()
returns the highest value from a given list (sorted alphanumeric)
+ - maxNum()
returns the highest value from a given list (sorted numeric)
+ - min()
returns the lowest value from a given list (sorted alphanumeric)
+ - minNum()
returns the lowest value from a given list (sorted numeric)
+ - rtrim()
returns string without trailing spaces
+ - time_str2num()
???
+ - trim()
returns string without leading and without trailing spaces
+ - UntoggleDirect()
For devices paired directly, converts state 'toggle' into 'on' or 'off'
+ - UntoggleIndirect()
For devices paired indirectly, switches the target device 'on' or 'off'
+ also when a 'toggle' was sent from the source device
+
+
+
+ VIERA
+
+
+ Define
+
+ define <name> VIERA <host> [<interval>]
+
+ This module controls Panasonic TV device over ethernet. It's possible to
+ power down the tv, change volume or mute/unmute the TV. Also this modul is simulating
+ the remote control and you are able to send different command buttons actions of remote control.
+ The module is tested with Panasonic plasma TV tx-p50vt30e
+
+ Defining a VIERA device will schedule an internal task (interval can be set
+ with optional parameter <interval> in seconds, if not set, the value is 30
+ seconds), which periodically reads the status of volume and mute status and triggers
+ notify/filelog commands.
+ Example:
+
+ define myTV1 VIERA 192.168.178.20
+ define myTV1 VIERA 192.168.178.20 60 #with custom interval of 60 seconds
+
+
+
+
+
+ Set
+
+ set <name> <command> [<value>]
+
+ Currently, the following commands are defined.
+
+
+ off
+ mute [on|off]
+ volume [0-100]
+ volumeUp
+ volumeDown
+ channel [1-9999]
+ channelUp
+ channelDown
+ statusRequest
+ remoteControl <command>
+
+
+
+
+
+ Remote control (depending on your model, maybe)
+ For this application the following commands are available:
+
+ 3D => 3D button
+ BLUE => Blue
+ CANCEL => Cancel / Exit
+ CHG_INPUT => AV
+ CH_DOWN => Channel down
+ CH_UP => Channel up
+ D0 => Digit 0
+ D1 => Digit 1
+ D2 => Digit 2
+ D3 => Digit 3
+ D4 => Digit 4
+ D5 => Digit 5
+ D6 => Digit 6
+ D7 => Digit 7
+ D8 => Digit 8
+ D9 => Digit 9
+ DISP_MODE => Display mode / Aspect ratio
+ DOWN => Control DOWN
+ ENTER => Control Center click / enter
+ EPG => Guide / EPG
+ FF => Fast forward
+ GREEN => Green
+ HOLD => TTV hold / image freeze
+ INDEX => TTV index
+ INFO => Info
+ INTERNET => VIERA connect
+ LEFT => Control LEFT
+ MENU => Menu
+ MUTE => Mute
+ PAUSE => Pause
+ PLAY => Play
+ POWER => Power off
+ P_NR => P-NR (Noise reduction)
+ REC => Record
+ RED => Red
+ RETURN => Return
+ REW => Rewind
+ RIGHT => Control RIGHT
+ R_TUNE => Seems to do the same as INFO
+ SD_CARD => SD-card
+ SKIP_NEXT => Skip next
+ SKIP_PREV => Skip previous
+ STOP => Stop
+ STTL => STTL / Subtitles
+ SUBMENU => Option
+ TEXT => Text / TTV
+ TV => TV
+ UP => Control UP
+ VIERA_LINK => VIERA link
+ VOLDOWN => Volume down
+ VOLUP => Volume up
+ VTOOLS => VIERA tools
+ YELLOW => Yellow
+
+
+
+ Example:
+
+ set <name> mute on
+ set <name> volume 20
+ set <name> remoteControl CH_DOWN
+
+
+
+ Notes:
+ Activate volume remotecontrol by DLNA: Menu -> Setup -> Network Setup -> Network Link Settings -> DLNA RemoteVolume -> On
+
+
+
+
+ Get
+
+ get <name> <what>
+
+ Currently, the following commands are defined and return the current state of the TV.
+
+ mute
+ volume
+ power
+ presence
+
+
+
+
+
+ Attributes
+
+
+
+
+ Generated events:
+
+ - volume
+ - mute
+ - presence
+ - power
+ - state
+
+
+
+
+ VantagePro2
+
+ Note: this module needs the Net::Telnet perl module.
+
+
+ Define
+
+ define <name> <ip-address> <port> <delay>
+
+ Defines a Davis VantagePro2 weatherstation attached on transparent ethernet/usb|serial server accessable by telnet.
+
+ Examples:
+
+ define AUSSEN.wetterstation VantagePro2 192.168.8.127 4999 60
+
+ fhem> list AUSSEN.wetterstation
+ Internals:
+ DEF 192.168.8.127 4999 60
+ Host 192.168.8.127
+ NAME AUSSEN.wetterstation
+ NR 5
+ Port 4999
+ STATE T-OUT: 22.78 T-IN: 26.50 H-OUT: 55 H-IN: 45 W: 1.61 W-AV: 1.61 WS 257 R: 0.00 S: 770 UV: 4.1 RD: 0 RM: 41 RY: 241 BM: 76.27 BT: Steady
+ TYPE VantagePro2
+ Readings:
+ 2010-08-04 10:15:17 10 min. average windspeed 1.61 (km/h)
+ 2010-08-04 10:15:17 UV 4.1 (UV/Index)
+ 2010-08-04 10:15:17 barometer 76.27 (Millimeters)
+ 2010-08-04 10:15:17 barometer trend Steady
+ 2010-08-04 10:15:17 day rain 0 (mm/day)
+ 2010-08-04 10:15:17 humidity inside 45 (%)
+ 2010-08-04 10:15:17 humidity outside 55 (%)
+ 2010-08-04 10:15:17 month rain 41 (mm/month)
+ 2010-08-04 10:15:17 rainrate 0.00 (mm/h)
+ 2010-08-04 10:15:17 solar 770 (Watt/m^2)
+ 2010-08-04 10:15:17 temperature-inside 26.50 (Celsius)
+ 2010-08-04 10:15:17 temperature-outside 22.78 (Celsius)
+ 2010-08-04 10:15:17 wind direction 257 (Degrees)
+ 2010-08-04 10:15:17 windspeed 1.61 (km/h)
+ 2010-08-04 10:15:17 year rain 241 (mm/year)
+Attributes:
+ delay 60
+
+
+
+
+
+
+ WEBCOUNT
+
+ Note: this module needs the HTTP::Request and LWP::UserAgent perl modules.
+
+
+ Define
+
+ define <name> WEBCOUNT <ip-address> <port> <delay>
+
+ Defines an WEBCOUNT device (Box with 6 count pulses, www.wut.de) via ip address. The device is pooled (delay interval).
+
+
+ Examples:
+
+ define pump WEBCOUNT 192.168.8.200 1 60
+
+
+
+
+
+ WEBIO
+
+ Note: this module needs the HTTP::Request and LWP::UserAgent perl modules.
+
+
+ Define
+
+ define <name> WEBIO <ip-address> <port> <delay>
+
+ Defines an Web-IO device (Box with 2 Analog-In/Out 0..10V, www.wut.de) via ip address. The status of the device is also pooled (delay interval).
+
+
+ Examples:
+
+ define pumpspeed WEBIO 192.168.8.200 1 60
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ 0.00 - 10.00
+
+ Examples:
+
+
+
+
+
+
+ WEBIO_12DIGITAL
+
+ Note: this module needs the HTTP::Request and LWP::UserAgent perl modules.
+
+
+ Define
+
+ define <name> WEBIO_12DIGITAL <ip-address> <outputport> <delay>
+
+ Defines an Web-IO-Digital device (Box with up to 12 digital in/outputs, www.wut.de) via ip address. The status of the device is also pooled (delay interval).
+
+ Examples:
+
+ define motor1 WEBIO_12DIGITAL 192.168.8.200 1 60
+
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ on off
+
+ Examples:
+
+
+
+
+
+
+ WEBTHERM
+
+ This module connects a Web-Thermometer made by W&T to your FHEM installation.
+ Currently this module is no longer maintained, but it should work in its current state.
+ It is provided "as is" for backward compatibility.
+
+
+ Define
+
+ define <name> WEBTHERM <ip-address> <port-nr> <interval>
+
+ Defines a WEBTHERM device at given ip and port.
+ Values are polled periodically defined by given interval (in seconds).
+ Read temperature is written into reading "state".
+
+
+
+
+ Set
+
+
+
+
+ Get
+
+
+
+
+ Attr
+
+
+
+ WOL
+
+Defines a WOL device via its MAC and IP address.
+
+when sending the on command to a WOL device it wakes up the dependent device by sending a magic packet. When running in repeat mode the magic paket ist sent every n seconds to the device.
+So, for example a Buffalo NAS can be kept awake.
+
+
+ Define
+
+ define <name> WOL <MAC> <IP> [<mode> [<repeat>]]
+
+
+
+ - MAC
+ - MAC-Adress of the host
+ - IP
+ - IP-Adress of the host (or broadcast address of the local network if IP of the host is unknown)
+ - mode [EW|UDP]
+ - EW: wakeup by usr/bin/ether-wake
+ - UDP: wakeup by an implementation like Net::Wake(CPAN)
+
+
+
+ Examples:
+
+ define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 switching only one time
+ define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 EW by ether-wake(linux command)
+ define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 BOTH by both methods
+ define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 UDP 200 in repeat modeusr/bin/ether-wake in repeatmode
+
+
+
+ Notes:
+
+ Not every hardware is able to wake up other devices by default. Oftenly firewalls filter magic packets. Switch them first off.
+ You may need a packet sniffer to check some malfunktion.
+ With this module you get two methods to do the job: see the mode parameter.
+
+
+
+
+ Set
+
+ set <name> <value>
+
+ where value is one of:
+
+ refresh # checks(by ping) whether the device is currently running
+ on # sends a magic packet to the defined MAC address
+ off # stops sending magic packets and sends the shutdownCmd(see attributes)
+
+
+ Examples:
+
+ set computer1 on
+ set computer1 off
+ set computer1 refresh
+
+
+
+
+ Attributes
+
+ attr <name> sysCmd <string>
+ Custom command executed to wakeup a remote machine, i.e. /usr/bin/ether-wake or /usr/bin/wakeonlan
+ attr <name> shutdownCmd <command>
+ Custom command executed to shutdown a remote machine. You can use <command>, like you use it in at, notify or Watchdog
+
+ Examples:
+
+ attr wol shutdownCmd set lamp on # fhem command
+ attr wol shutdownCmd { Log 1, "Teatime" } # Perl command
+ attr wol shutdownCmd "/bin/echo "Teatime" > /dev/console" # shell command
+
+ attr <name> interval <seconds>
+ defines the time between two checks by a ping if state of <name> is on
+
+
+
+
+ WS2000
+
+
+
+
+ Define
+
+ define <name> WS2000 <device_to_connect>
+
+
+ Define a WS2000 series raw receiver device sold by ELV. Details see here.
+ Unlike 86_FS10.pm it will handle the complete device communication itself
+ and doesnt require an external program. For this reason you can now use
+ this also on windows.
+
+ This Device will be usually connect to a serial port, but you can also
+ define a raw network redirector like lantronix XPORT(TM).
+ Note: Currently this device does not support a "set" function
+
+
+ Attributes:
+
+ rain : factor for calculating amount of rain in ml/count
+ altitude : height in meters to calculate pressure for NN (not used yet)
+
+
+ Example:
+
+ define WS2000 WS2000 /dev/ttyS0
+
+
+ define WS2000 WS2000 xport:10001
+
+
+ attr WS2000 rain 366 : use factor 366 ml/count for rain sensor S2000R
+
+
+
+
+ Set
+
+
+ Get
+
+ get <name> list
+
+ Gets the last reading of all received sensord
+
+ get <name> [TH0..TH7, T0..T7, I0..I7, R0..R7, W0..W7, L0..L7, P0..P7,LAST,RAW]
+ get the last reading for the name sensor,
+ LAST : Last received Sensor
+
+ RAW : original Data from interface
+
+
+
+
+
+ Attributes
+
+
+
+
+
+
+ WS300
+
+
+
+
+ Define
+
+ define WS300Device WS300 <serial device>
+ or
+ define <devname> WS300 [0-9]
+
+ The first line is mandatory if you have a WS300 device: it defines the
+ input device with its USB port. The name of this device is fixed and must
+ be WS300Device. It must be the first defined WS300 device.
+
+ For each additional device (with number 0 to 9) you have to define another
+ WS300 device, with an arbitrary name. The WS300 device which reports the
+ readings will be defined with the port number 9, an optional KS300 with the
+ port number 8.
+
+ Examples:
+
+ define WS300Device WS300 /dev/ttyUSB1
+ define ash2200.1 WS300 0
+ define ks300 WS300 8
+ define ws300 WS300 9
+
+
+
+
+
+ Set
+
+ set WS300Device <interval(min.)> <height(m)> <rainvalume(ml)>
+
+ Set some WS300 configuration parameters.
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+
+
+
+
+
+ WS3600
+
+ Defines a weather station, which is queried by means of an external
+ program. That program is executed by FHEM and is expected to deliver the
+ data at stdout in the format of a WS3600 series weather station (details
+ see below).
+
+ Define
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+ - model WS3600, WS2300,
+ WS1080 (not used for anything, yet)
+
+
+
+
+
+ WWO
+
+
+
+
+ Define
+
+ define <name> WWO <location> <apikey>
+
+ Defines a virtual device for WWO forecasts.
+
+ A WWO device periodically gathers current and forecast weather conditions
+ from worldweatheronline.com (the free api version)
+ You need to signup at http://developer.worldweatheronline.com to get an apikey)
+
+ The parameter location is the WOEID (WHERE-ON-EARTH-ID), go to
+ http://www.worldweatheronline.com to find it out for your valid location.
+
+ The natural language in which the forecast information appears is english.
+
+
+ The interval is set to update the values every hour.
+
+
+ Examples:
+
+ define MyWeather WWO Berlin,Germany
+
+
+ The module provides one additional function WWOAsHtml . The function return the HTML code for a
+ vertically arranged weather forecast.
+
+
+ Example:
+
+ define MyWeatherWeblink weblink htmlCode { WWOAsHtml("MyWeather") }
+
+
+
+
+
+
+
+ Set
+
+ set <name> update
+
+ Forces the retrieval of the weather data. The next automatic retrieval is scheduled to occur
+ interval seconds later.
+
+
+
+
+ Get
+
+ get <name> <reading>
+
+ Valid readings and their meaning (? can be one of 0, 1, 2, 3, 4, 5 and stands
+ for today, tomorrow, etc. - with 'fc?_' or without! - without is meaning 'current condition'):
+
+ cloudcover | cloudcover in percent |
+ current_date_time | last update of forecast on server |
+ fc?_date | date of the forecast condition - not valid without 'fc?' |
+ fc?_icon | name of the forecasticon |
+ fc?_precipMM | preciption for day |
+ fc?_tempMaxC | forecasted daily high in degrees centigrade |
+ fc?_tempMaxF | forecasted daily high in degrees fahrenheit |
+ fc?_tempMinC | forecasted daily low in degrees centigrade |
+ fc?_tempMinF | forecasted daily low in degrees fahrenheit |
+ fc?_weatherCode | weathercode |
+ fc?_weatherDesc | short weather desciption |
+ fc?_weatherIconUrl | full url to the weathericonfile |
+ fc?_winddir16Point | winddirection with 16 points |
+ fc?_winddirDegree | windirection in degrees |
+ fc?_winddirection | winddirection |
+ fc?_windspeedKmph | windspeed in km/h |
+ fc?_windspeedMiles | windspeed in miles/h |
+ humidity | current humidity in % |
+ localObsDateTime | local time of observation |
+ observation_time | time of observation |
+ pressure | air pressure in hPa |
+ query | returns the queried location |
+ temperature | current temperature in degrees centigrade |
+ visibility | current visibilit in km |
+
+
+
+
+
+
+ Attributes
+
+
+
+
+
+ Weather
+
+
+
+
+ Define
+
+ define <name> Weather <location> [<interval> [<language>]]
+
+ Defines a virtual device for weather forecasts.
+
+ A Weather device periodically gathers current and forecast weather conditions
+ from the Yahoo Weather API.
+
+ The parameter location is the WOEID (WHERE-ON-EARTH-ID), go to
+ http://weather.yahoo.com to find it out for your location.
+
+ The optional parameter interval is the time between subsequent updates
+ in seconds. It defaults to 3600 (1 hour).
+
+ The optional language parameter may be one of
+ de ,
+ en ,
+ nl ,
+
+ It determines the natural language in which the forecast information appears.
+ It defaults to en . If you want to set the language you also have to set the interval.
+
+ Examples:
+
+ define MyWeather Weather 673513
+ define Forecast Weather 673513 1800
+
+
+ The module provides four additional functions WeatherAsHtml , WeatherAsHtmlV , WeatherAsHtmlH and
+ WeatherAsHtmlD . The former two functions are identical: they return the HTML code for a
+ vertically arranged weather forecast. The third function returns the HTML code for a horizontally arranged weather forecast. The
+ latter function dynamically picks the orientation depending on wether a smallscreen style is set (vertical layout) or not (horizontal layout).
+ Example:
+
+ define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather") }
+
+
+
+
+
+
+
+ Set
+
+ set <name> update
+
+ Forces the retrieval of the weather data. The next automatic retrieval is scheduled to occur
+ interval seconds later.
+
+
+
+
+ Get
+
+ get <name> <reading>
+
+ Valid readings and their meaning (? can be one of 1, 2, 3, 4, 5 and stands
+ for today, tomorrow, etc.):
+
+ city | name of town returned for location |
+ code | current condition code |
+ condition | current condition |
+ current_date_time | last update of forecast on server |
+ fc?_code | forecast condition code |
+ fc?_condition | forecast condition |
+ fc?_day_of_week | day of week for day +? |
+ fc?_high_c | forecasted daily high in degrees centigrade |
+ fc?_icon | forecast icon |
+ fc?_low_c | forecasted daily low in degrees centigrade |
+ humidity | current humidity in % |
+ icon | relative path for current icon |
+ pressure | air pressure in hPa |
+ pressure_trend | air pressure trend (0= steady, 1= rising, 2= falling) |
+ pressure_trend_txt | textual representation of air pressure trend |
+ pressure_trend_sym | symbolic representation of air pressure trend |
+ temperature | current temperature in degrees centigrade |
+ temp_c | current temperature in degrees centigrade |
+ temp_f | current temperature in degrees Fahrenheit |
+ visibility | visibility in km |
+ wind | wind speed in km/h |
+ wind_chill | wind chill in degrees centigrade |
+ wind_condition | wind direction and speed |
+ wind_direction | direction wind comes from in degrees (0 = north wind) |
+ wind_speed | same as wind |
+
+
+
+
+
+
+ Attributes
+
+
+
+
+
+
+
+ WeekdayTimer
+
+
+
+
+ X10
+
+
+ Define
+
+ define <name> X10 <model> <housecode>
+ <unitcode>
+
+
+ Defines an X10 device via its model, housecode and unitcode.
+
+ Notes:
+
+ <model> is one of
+
+ lm12 : lamp module, dimmable
+ lm15 : lamp module, not dimmable
+ am12 : appliance module, not dimmable
+ tm12 : tranceiver module, not dimmable. Its
+ unitcode is 1.
+
+ Model determines whether a dim command is reasonable to be sent
+ or not.
+ <housecode> ranges from A to P.
+ <unitcode> ranges from 1 to 16.
+
+
+
+ Examples:
+
+ define lamp1 X10 lm12 N 10
+ define pump X10 am12 B 7
+ define lamp2 X10 lm15 N 11
+
+
+
+
+
+ Set
+
+ set <name> <value> [<argument>]
+
+ where value is one of:
+
+ dimdown # requires argument, see the note
+ dimup # requires argument, see the note
+ off
+ on
+ on-till # Special, see the note
+ on-for-timer # Special, see the note
+
+ Examples:
+
+ set lamp1 dimup 10
+ set lamp1,lamp2 off
+ set pump off
+ set lamp2 on-till 19:59
+ set lamp2 on-for-timer 00:02:30
+
+
+ Notes:
+
+ - Only switching and dimming are supported by now.
+ - Dimming is valid only for a dimmable device as specified by
+ the
model argument in its define
+ statement.
+ - An X10 device has 210 discrete brightness levels. If you use a
+ X10 sender, e.g. a remote control or a wall switch to dim, a
+ brightness step is 100%/210.
+ dimdown and dimup take a number in the
+ range from 0 to 22 as argument. It is assumed that argument 1 is
+ a 1% brightness change (microdim) and arguments 2 to 22 are
+ 10%..100% brightness changes. The meaning of argument 0 is
+ unclear.
+ - This currently leads to some confusion in the logs as the
+
dimdown and dimup codes are logged with
+ different meaning of the arguments depending on whether the commands
+ were sent from the PC or from a remote control or a wall switch.
+ dimdown and dimup from on and off states may
+ have unexpected results. This seems to be a feature of the X10
+ devices.
+ on-till requires an absolute time in the "at" format
+ (HH:MM:SS, HH:MM) or { <perl code> }, where the perl code
+ returns a time specification).
+ If the current time is greater than the specified time, then the
+ command is ignored, else an "on" command is generated, and for the
+ given "till-time" an off command is scheduleld via the at command.
+
+ on-for-timer requires a relative time in the "at" format
+ (HH:MM:SS, HH:MM) or { <perl code> }, where the perl code
+ returns a time specification).
+
+
+
+
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+ XBMC
+
+
+ Define
+
+ define <name> XBMC <ip[:port]> <http|tcp> [<username>] [<password>]
+
+
+ This module allows you to control XBMC and receive events from XBMC. It can also be used to control Plex (see attribute compatibilityMode).
+
+ Prerequisites
+
+ - Requires XBMC "Frodo" 12.0.
+ - To use this module you will have to enable JSON-RPC. See here.
+ - The Perl module JSON is required.
+ On Debian/Raspbian: apt-get install libjson-perl
+ Via CPAN: cpan install JSON
+ To get it working on a Fritzbox the JSON module has to be installed manually.
+
+
+ To receive events it is necessary to use TCP. The default TCP port is 9090. Username and password are optional for TCP. Be sure to enable JSON-RPC
+ for TCP. See here.
+
+ Example:
+
+
+ define htpc XBMC 192.168.0.10 tcp
+
+ define htpc XBMC 192.168.0.10:9000 tcp # With custom port
+
+ define htpc XBMC 192.168.0.10 http # Use HTTP instead of TCP - Note: to receive events use TCP!
+
+ define htpc XBMC 192.168.0.10 http xbmc passwd # Use HTTP with credentials - Note: to receive events use TCP!
+
+
+
+ Remote control:
+ There is an simple remote control layout for XBMC which contains the most basic buttons. To add the remote control to the webinterface execute the
+ following commands:
+
+
+ define <rc_name> remotecontrol #adds the remote control
+
+ set <rc_name> layout XBMC_RClayout #sets the layout for the remote control
+
+ set <rc_name> makenotify <XBMC_device> #links the buttons to the actions
+
+
+
+ Known issues:
+ XBMC sometimes creates events twices. For example the Player.OnPlay event is created twice if play a song. Unfortunately this
+ is a issue of XBMC. The fix of this bug is included in future version of XBMC (> 12.2).
+
+
+
+
+ Set
+
+ set <name> <command> [<parameter>]
+
+ This module supports the following commands:
+
+ Player related commands:
+
+ - play [<all|audio|video|picture>] - starts the playback (might only work if previously paused). The second argument defines which player should be started. By default the active players will be started
+ - pause [<all|audio|video|picture>] - pauses the playback
+ - playpause [<all|audio|video|picture>] - toggles between play and pause for the given player
+ - stop [<all|audio|video|picture>] - stop the playback
+ - next [<all|audio|video|picture>] - jump to the next track
+ - prev [<all|audio|video|picture>] - jump to the previous track or the beginning of the current track.
+ - goto <position> [<audio|video|picture>] - Goes to the in the playlist. has to be a number.
+ - shuffle [<toggle|on|off>] [<audio|video|picture>] - Enables/Disables shuffle mode. Without furhter parameters the shuffle mode is toggled.
+ - repeat <one|all|off> [<audio|video|picture>] - Sets the repeat mode.
+ - open <URI> - Plays the resource located at the URI (can be a url or a file)
+ - opendir <path> - Plays the content of the directory
+
+ Input related commands:
+
+ - back - Back-button
+ - down - Down-button
+ - up - Up-button
+ - left - Left-button
+ - right - Right-button
+ - home - Home-button
+ - select - Select-button
+ - info - Info-button
+ - showosd - Opens the OSD (On Screen Display)
+ - showcodec - Shows Codec information
+ - exec <action> - Execute an input action. All available actions are listed here
+ - send <text> - Sends <text> as input to XBMC
+
+ Libary related commands:
+
+ - videolibrary clean - Removes non-existing files from the video libary
+ - videolibrary scan - Scan for new video files
+ - audiolibrary clean - Removes non-existing files from the audio libary
+ - audiolibrary scan - Scan for new audio files
+
+ Application related commands:
+
+ - mute [<0|1>] - 1 for mute; 0 for unmute; by default the mute status will be toggled
+ - volume <n> - sets the volume to <n>. <n> must be a number between 0 and 100
+ - volumeDown <n> - volume down
+ - volumeUp <n> - volume up
+ - quit - closes XBMC
+ - off - depending on the value of the attribute "offMode" XBMC will be closed (see quit) or the system will be shut down, put into hibernation or stand by. Default is quit.
+
+ System related commands:
+
+ - eject - will eject the optical drive
+ - shutdown - the XBMC host will be shut down
+ - suspend - the XBMC host will be put into stand by
+ - hibernate - the XBMC host will be put into hibernation
+ - reboot - the XBMC host will be rebooted
+
+
+
+
+ Messaging
+
+ To show messages on XBMC (little message PopUp at the bottom right egde of the screen) you can use the following commands:
+ set <XBMC_device> msg <title> <msg> [<duration>] [<icon>]
+ The default duration of a message is 5000 (5 seconds). The minimum duration is 1500 (1.5 seconds). By default no icon is shown. XBMC provides three
+ different icon: error, info and warning. You can also use an uri to define an icon. Please enclose title and/or message into quotes (" or ') if it consists
+ of multiple words.
+
+
+
+ Generated Readings/Events:
+
+ - audiolibrary - Possible values: cleanfinished, cleanstarted, remove, scanfinished, scanstarted, update
+ - currentAlbum - album of the current song/musicvideo
+ - currentArtist - artist of the current song/musicvideo
+ - currentMedia - file/URL of the media item being played
+ - currentTitle - title of the current media item
+ - currentTrack - track of the current song/musicvideo
+ - episode - episode number
+ - episodeid - id of the episode in the video library
+ - fullscreen - indicates if XBMC runs in fullscreen mode (on/off)
+ - label - label of the current media item
+ - movieid - id of the movie in the video library
+ - musicvideoid - id of the musicvideo in the video library
+ - mute - indicates if XBMC is muted (on/off)
+ - name - software name (e.g. XBMC)
+ - originaltitle - original title of the movie being played
+ - partymode - indicates if XBMC runs in party mode (on/off) (not available for Plex)
+ - playlist - Possible values: add, clear, remove
+ - playStatus - Indicates the player status: playing, paused, stopped
+ - repeat - current repeat mode (one/all/off)
+ - season - season of the current episode
+ - showtitle - title of the show being played
+ - shuffle - indicates if the playback is shuffled (on/off)
+ - skin - current skin of XBMC
+ - songid - id of the song in the music library
+ - system - Possible values: lowbattery, quit, restart, sleep, wake
+ - time - current position in the playing media item (only updated on play/pause)
+ - totaltime - total run time of the current media item
+ - type - type of the media item. Possible values: episode, movie, song, musicvideo, picture, unknown
+ - version - version of XBMC
+ - videolibrary - Possible values: cleanfinished, cleanstarted, remove, scanfinished, scanstarted, update
+ - volume - value between 0 and 100 stating the current volume setting
+ - year - year of the movie being played
+
+
+ Remarks on the events
+
+ The event playStatus = playing indicates a playback of a media item. Depending on the event type different events are generated:
+
+ - type = song generated events are: album, artist, file, title and track
+ - type = musicvideo generated events are: album, artist, file and title
+ - type = episode generated events are: episode, file, season, showtitle, and title
+ - type = movie generated events are: originaltitle, file, title, and year
+ - type = picture generated events are: file
+ - type = unknown generated events are: file
+
+
+
+
+ Attributes
+
+ - compatibilityMode
+ This module can also be used to control Plex, since the JSON Api is mostly the same, but there are some differences.
+ If you want to control Plex set the attribute compatibilityMode to plex.
+ - offMode
+ Declares what should be down if the off command is executed. Possible values are quit (closes XBMC), hibernate (puts system into hibernation),
+ suspend (puts system into stand by), and shutdown (shuts down the system). Default value is quit
+ - fork
+ If XBMC does not run all the time it used to be the case that FHEM blocks because it cannot reach XBMC (only happened
+ if TCP was used). If you encounter problems like FHEM not responding for a few seconds then you should set attr <XBMC_device> fork enable
+ which will move the search for XBMC into a separate process.
+
+
+
+
+ xmllist
+
+ xmllist [devspec]
+
+ Returns an XML tree of device definitions. devspec is
+ optional, and restricts the list of devices if specified.
+
+ Example:
+
+
+ fhem> xmllist
+ <FHZINFO>
+
+ <internal_LIST>
+
+ <internal name="global" state="internal" sets="" attrs="room configfile logfile ...">
+
+ <INT key="DEF" value="<no definition>"/>
+ <INT key="NR" value="0"/>
+ <INT key="STATE" value="internal"/>
+
+ [...]
+
+
+
+
+
+
+ YAMAHA_AVR
+
+
+
+ Define
+
+
+ define <name> YAMAHA_AVR <ip-address> [<zone>] [<status_interval>]
+
+ define <name> YAMAHA_AVR <ip-address> [<zone>] [<off_status_interval>] [<on_status_interval>]
+
+
+
+ This module controls AV receiver from Yamaha via network connection. You are able
+ to power your AV reveiver on and off, query it's power state,
+ select the input (HDMI, AV, AirPlay, internet radio, Tuner, ...), select the volume
+ or mute/unmute the volume.
+ Defining a YAMAHA_AVR device will schedule an internal task (interval can be set
+ with optional parameter <status_interval> in seconds, if not set, the value is 30
+ seconds), which periodically reads the status of the AV receiver (power state, selected
+ input, volume and mute status) and triggers notify/filelog commands.
+
+ Different status update intervals depending on the power state can be given also.
+ If two intervals are given in the define statement, the first interval statement stands for the status update
+ interval in seconds in case the device is off, absent or any other non-normal state. The second
+ interval statement is used when the device is on.
+
+ Example:
+
+ define AV_Receiver YAMAHA_AVR 192.168.0.10
+
+ # With custom status interval of 60 seconds
+ define AV_Receiver YAMAHA_AVR 192.168.0.10 mainzone 60
+
+ # With custom "off"-interval of 60 seconds and "on"-interval of 10 seconds
+ define AV_Receiver YAMAHA_AVR 192.168.0.10 mainzone 60 10
+
+
+
+
+ Zone Selection
+
+ If your receiver supports zone selection (e.g. RX-V671, RX-V673,... and the AVANTAGE series)
+ you can select the zone which should be controlled. The RX-V3xx and RX-V4xx series for example
+ just have a "Main Zone" (which is the whole receiver itself). In general you have the following
+ possibilities for the parameter <zone> (depending on your receiver model).
+
+ - mainzone - this is the main zone (standard)
+ - zone2 - The second zone (Zone 2)
+ - zone3 - The third zone (Zone 3)
+ - zone4 - The fourth zone (Zone 4)
+
+
+ Depending on your receiver model you have not all inputs available on these different zones.
+ The module just offers the real available inputs.
+
+ Example:
+
+
+ define AV_Receiver YAMAHA_AVR 192.168.0.10 # If no zone is specified, the "Main Zone" will be used.
+ attr AV_Receiver YAMAHA_AVR room Livingroom
+
+ # Define the second zone
+ define AV_Receiver_Zone2 YAMAHA_AVR 192.168.0.10 zone2
+ attr AV_Receiver_Zone2 room Bedroom
+
+ For each Zone you will need an own YAMAHA_AVR device, which can be assigned to a different room.
+ Each zone can be controlled separatly from all other available zones.
+
+
+
+
+ Set
+
+ set <name> <command> [<parameter>]
+
+ Currently, the following commands are defined; the available inputs are depending on the used receiver.
+ The module only offers the real available inputs and scenes. The following input commands are just an example and can differ.
+
+
+- on - powers on the device
+- off - shuts down the device
+- input hdm1,hdmX,... - selects the input channel (only the real available inputs were given)
+- scene scene1,sceneX - select the scene
+- volume 0...100 - set the volume level in percentage
+- volumeStraight -80...15 - set the volume level in decibel
+- volumeUp [0-100] - increases the volume level by 5% or the value of attribute volumeSteps (optional the increasing level can be given as argument, which will be used instead)
+- volumeDown [0-100] - decreases the volume level by 5% or the value of attribute volumeSteps (optional the decreasing level can be given as argument, which will be used instead)
+- mute on|off|toggle - activates volume mute
+- statusRequest - requests the current status of the device
+- remoteControl up,down,... - sends remote control commands as listed below
+
+
+
+Remote control (not in all zones available, depending on your model)
+
+ In many receiver models, inputs exist, which can't be used just by selecting them. These inputs needs
+ a manual interaction with the remote control to activate the playback (e.g. Internet Radio, Network Streaming).
+ For this application the following commands are available:
+
+ Cursor Selection:
+
+ remoteControl up
+ remoteControl down
+ remoteControl left
+ remoteControl right
+ remoteControl enter
+ remoteControl return
+
+
+ Menu Selection:
+
+ remoteControl setup
+ remoteControl option
+ remoteControl display
+
+
+ Tuner Control:
+
+ remoteControl tunerPresetUp
+ remoteControl tunerPresetDown
+
+
+ The button names are the same as on your remote control.
+
+ A typical example is the automatical turn on and play an internet radio broadcast:
+
+ # the initial definition.
+ define AV_receiver YAMAHA_AVR 192.168.0.3
+
+ And in your 99_MyUtils.pm the following function:
+
+ sub startNetRadio()
+ {
+ fhem "set AV_Receiver on";
+ sleep 5;
+ fhem "set AV_Receiver input netradio";
+ sleep 4;
+ fhem "set AV_Receiver remoteControl enter";
+ sleep 2;
+ fhem "set AV_Receiver remoteControl enter";
+ }
+
+ The remote control commands must be separated with a sleep, because the receiver is loading meanwhile and don't accept commands.
+
+ Now you can use this function by typing the following line in your FHEM command line or in your notify-definitions:
+
+
+
+
+
+
+
+ Get
+
+ get <name> <reading>
+
+ Currently, the get command only returns the reading values. For a specific list of possible values, see section "Generated Readings/Events".
+
+
+
+ Attributes
+
+
+ - do_not_notify
+ - readingFnAttributes
+ - request-timeout
+ Optional attribute change the response timeout in seconds for all queries to the receiver.
+
+ Possible values: 1-5 seconds. Default value is 4 seconds.
+ - disable
+ Optional attribute to disable the internal cyclic status update of the receiver. Manual status updates via statusRequest command is still possible.
+
+ Possible values: 0 => perform cyclic status update, 1 => don't perform cyclic status updates.
+ - volume-smooth-change
+ Optional attribute to activate a smooth volume change.
+
+ Possible values: 0 => off , 1 => on
+ - volume-smooth-steps
+ Optional attribute to define the number of volume changes between the
+ current and the desired volume. Default value is 5 steps
+ - volumeSteps
+ Optional attribute to define the default increasing and decreasing level for the volumeUp and volumeDown set command. Default value is 5%
+
+
+ Generated Readings/Events:
+
+ - input - The selected input source according to the FHEM input commands
+ - inputName - The input description as seen on the receiver display
+ - mute - Reports the mute status of the receiver or zone (can be "on" or "off")
+ - power - Reports the power status of the receiver or zone (can be "on" or "off")
+ - presence - Reports the presence status of the receiver or zone (can be "absent" or "present"). In case of an absent device, it cannot be controlled via FHEM anymore.
+ - volume - Reports the current volume level of the receiver or zone in percentage values (between 0 and 100 %)
+ - volumeStraight - Reports the current volume level of the receiver or zone in decibel values (between -80.5 and +15.5 dB)
+ - state - Reports the current power state and an absence of the device (can be "on", "off" or "absent")
+
Input dependent Readings/Events:
+ - currentChannel - Number of the input channel (SIRIUS only)
+ - currentStation - Station name of the current radio station (available on NET RADIO, PANDORA
+ - currentAlbum - Album name of the current song
+ - currentArtist - Artist name of the current song
+ - currentTitle - Title of the current song
+ - playStatus - indicates if the input plays music or not
+
+
+ Implementator's note
+
+ The module is only usable if you activate "Network Standby" on your receiver. Otherwise it is not possible to communicate with the receiver when it is turned off.
+
+
+
+
+
+
+ YAMAHA_BD
+
+
+
+ Define
+
+
+ define <name> YAMAHA_BD <ip-address> [<status_interval>]
+
+ define <name> YAMAHA_BD <ip-address> [<off_status_interval>] [<on_status_interval>]
+
+
+
+ This module controls Blu-Ray players from Yamaha via network connection. You are able
+ to switch your player on and off, query it's power state,
+ control the playback, open and close the tray and send all remote control commands.
+ Defining a YAMAHA_BD device will schedule an internal task (interval can be set
+ with optional parameter <status_interval> in seconds, if not set, the value is 30
+ seconds), which periodically reads the status of the player (power state, current disc, tray status,...)
+ and triggers notify/filelog commands.
+
+ Different status update intervals depending on the power state can be given also.
+ If two intervals are given to the define statement, the first interval statement represents the status update
+ interval in seconds in case the device is off, absent or any other non-normal state. The second
+ interval statement is used when the device is on.
+
+ Example:
+
+ define BD_Player YAMAHA_BD 192.168.0.10
+
+ # With custom status interval of 60 seconds
+ define BD_Player YAMAHA_BD 192.168.0.10 60
+
+ # With custom "off"-interval of 60 seconds and "on"-interval of 10 seconds
+ define BD_Player YAMAHA_BD 192.168.0.10 60 10
+
+
+
+
+
+ Set
+
+ set <name> <command> [<parameter>]
+
+ Currently, the following commands are defined.
+
+
+- on - powers on the device
+- off - shuts down the device
+- tray open,close - open or close the disc tray
+- statusRequest - requests the current status of the device
+- remoteControl up,down,... - sends remote control commands as listed in the following chapter
+
+Playback control commands
+
+- play - start playing the current media
+- pause - pause the current media playback
+- stop - stop the current media playback
+- skip forward,reverse - skip the current track or chapter
+- fast forward,reverse - fast forward or reverse playback
+- slow forward,reverse - slow forward or reverse playback
+
+
+
+
+Remote control
+
+ The following commands are available:
+
+ Number Buttons (0-9):
+
+ remoteControl 0
+ remoteControl 1
+ remoteControl 2
+ ...
+ remoteControl 9
+
+
+ Cursor Selection:
+
+ remoteControl up
+ remoteControl down
+ remoteControl left
+ remoteControl right
+ remoteControl enter
+ remoteControl return
+
+
+ Menu Selection:
+
+ remoteControl OSDonScreen
+ remoteControl OSDstatus
+ remoteControl popupMenu
+ remoteControl topMenu
+ remoteControl setup
+ remoteControl home
+ remoteControl clear
+
+
+ Color Buttons:
+
+ remoteControl red
+ remoteControl green
+ remoteControl yellow
+ remoteControl blue
+
+
+ The button names are the same as on your remote control.
+
+
+
+
+ Get
+
+ get <name> <reading>
+
+ Currently, the get command only returns the reading values. For a specific list of possible values, see section "Generated Readings/Events".
+
+
+
+ Attributes
+
+ - do_not_notify
+ - readingFnAttributes
+ - disable
+ Optional attribute to disable the internal cyclic status update of the player. Manual status updates via statusRequest command is still possible.
+
+ Possible values: 0 => perform cyclic status update, 1 => don't perform cyclic status updates.
+ - request-timeout
+ Optional attribute change the response timeout in seconds for all queries to the player.
+
+ Possible values: 1-5 seconds. Default value is 4 seconds.
+
+ Generated Readings/Events:
+
+ - input - The current playback source (can be "DISC", "USB" or "Network")
+ - discType - The current type of disc, which is inserted (e.g. "No Disc", "CD", "DVD", "BD",...)
+ - error - indicates an hardware error of the player (can be "none", "fan error" or "usb overcurrent")
+ - power - Reports the power status of the player or zone (can be "on" or "off")
+ - presence - Reports the presence status of the player or zone (can be "absent" or "present"). In case of an absent device, it cannot be controlled via FHEM anymore.
+ - trayStatus - The disc tray status (can be "open" or "close")
+ - state - Reports the current power state and an absence of the device (can be "on", "off" or "absent")
+
Input dependent Readings/Events:
+ - currentChapter - Number of the current DVD/BD Chapter (only at DVD/BD's)
+ - currentMedia - Name of the current file (only at USB)
+ - playTimeCurrent - current timecode of played media
+ - playTimeTotal - the total time of the current movie (only at DVD/BD's)
+ - playStatus - indicates if the player plays media or not (can be "play", "pause", "stop", "fast fwd", "fast rev", "slow fwd", "slow rev")
+
+
+ Implementator's note
+
+ - Some older models (e.g. BD-S671) cannot be controlled over networked by delivery. A firmware update is neccessary to control theese models via FHEM
+ - The module is only usable if you activate "Network Control" on your player. Otherwise it is not possible to communicate with the player.
+
+
+
+
+
+
+ ZWDongle
+
+ This module serves a ZWave dongle, which is attached via USB or TCP/IP, and
+ enables the use of ZWave devices (see also the ZWave
+ module). It was tested wit a Goodway WD6001, but since the protocol is
+ standardized, it should work with other devices too. A notable exception is
+ the USB device from Merten.
+
+
+ Define
+
+ define <name> ZWDongle <device>
+
+
+ Upon initial connection the module will get the homeId of the attached
+ device. Since the DevIo module is used to open the device, you can also use
+ devices connected via TCP/IP. See this paragraph on
+ device naming details.
+
+ Example:
+
+ define zwdongle_1 ZWDongle /dev/cu.PL2303-000014FA@115200
+
+
+
+
+
+ Set
+
+
+ - addNode [on|off]
+ Activate (or deactivate) inclusion mode. The controller (i.e. the dongle)
+ will accept inclusion (i.e. pairing/learning) requests only while in this
+ mode. After activating inclusion mode usually you have to press a switch
+ three times within 1.5 seconds on the node to be included into the network
+ of the controller. If autocreate is active, a fhem device will be created
+ after inclusion.
+
+ - removeNode [on|off]
+ Activate (or deactivate) exclusion mode. Note: the corresponding fhem
+ device have to be deleted manually.
+
+ - createNode id
+ Request the class information for the specified node, and create a fhem
+ device upon reception of the answer. Used for previously included nodes,
+ see the nodeList get command below.
+
+
+
+
+
+ Get
+
+ - nodeList
+ return the list of included nodeIds. Can be used to recreate fhem-nodes
+ with the createNode command.
+
+ - homeId
+ return the six hex-digit homeId of the controller.
+
+ - caps, ctrlCaps, version
+ return different controller specific information. Needed by developers
+ only.
+
+ - nodeInfo
+ return node specific information. Needed by developers only.
+
+
+ - raw
+ Send raw data to the controller. Developer only.
+
+
+
+
+ Attributes
+
+
+
+
+ Generated events:
+
+ - ZW_ADD_NODE_TO_NETWORK [learnReady|nodeFound|controller|done|failed]
+
+ - ZW_REMOVE_NODE_TO_NETWORK [learnReady|nodeFound|slave|controller|done|failed]
+
+ - UNDEFINED ZWave_${type6}_$id ZWave $homeId $id $classes"
+
+
+
+
+
+
+
+ ZWave
+
+ This module is used to control ZWave devices via FHEM, see www.z-wave.com on details for this device family.
+ This module is a client of the ZWDongle module, which
+ is directly attached to the controller via USB or TCP/IP.
+
+
+ Define
+
+ define <name> ZWave <homeId> <id> [classes]
+
+
+ <homeId> is the homeId of the controller node, and id is the id of the
+ slave node in the network of this controller.
+ classes is a hex-list of ZWave device classes. This argument is usually
+ specified by autocreate when creating a device. If you wish to manually
+ create a device, use the classes attribute instead, see below for details.
+ Defining a ZWave device the first time is usually done by autocreate.
+
+ Example:
+
+ define lamp ZWave 00ce2074 9
+ attr lamp classes SWITCH_BINARY BASIC MANUFACTURER_SPECIFIC VERSION SWITCH_ALL ASSOCIATION METER CONFIGURATION ALARM
+
+
+
+
+ Note: the sets/gets/generated events of a gven node depend on the classes
+ supported by this node. If a node supports 3 classes, then the union of
+ these sets/gets/events will be available for this node.
+ Commands for battery operated nodes will be queues internally, and sent when
+ the node sends a message. Answer to get commands appear then as events, the
+ corresponding readings will be updated.
+
+
+
+ Set
+
+
+ Note: devices with on/off functionality support the set extensions.
+
+
Class ASSOCIATION
+ - associationAdd groupId nodeId ...
+ Add the specified list of nodeIds to the assotion group groupId. Note:
+ upon creating a fhem-device for the first time fhem will automatically add
+ the controller to the first association group of the node corresponding to
+ the fhem device, i.e it issues a "set name associationAdd 1
+ controllerNodeId"
+
+ - associationDel groupId nodeId ...
+ Remove the specified list of nodeIds from the assotion group groupId.
+
+
Class BASIC
+ - basicValue value
+ Send value (0-255) to this device. The interpretation is device dependent,
+ e.g. for a SWITCH_BINARY device 0 is off and anything else is on.
+
+
Class CONFIGURATION
+ - configByte cfgAddress 8bitValue
+ configWord cfgAddress 16bitValue
+ configLong cfgAddress 32bitValue
+ Send a configuration value for the parameter cfgAddress. cfgAddress and
+ value is node specific.
+ - configDefault cfgAddress
+ Reset the configuration parameter for the cfgAddress parameter to its
+ default value. See the device documentation to determine this value.
+
+
Class SWITCH_BINARY
+ - on
+ switch the device on
+ - off
+ switch the device off
+ - reportOn,reportOff
+ activate/deactivate the reporting of device state changes to the
+ association group.
+
+
Class SWITCH_MULTILEVEL
+ - on, off, reportOn, reportOff
+ the same as for SWITCH_BINARY.
+ - dim value
+ dim to the requested value (0..100)
+
+
Class THERMOSTAT_MODE
+ - tmOff
+ - tmCooling
+ - tmHeating
+ - tmManual
+ set the thermostat mode to off, cooling, heating or manual.
+
+
+
Class WAKE_UP
+ - wakeupInterval value
+ Set the wakeup interval of battery operated devices to the given value in
+ seconds. Upon wakeup the device sends a wakeup notification.
+ - wakeupNoMoreInformation
+ put a battery driven device into sleep mode.
+
+
+
+
+
+ Get
+
+
+
Class ALARM
+ - alarm alarmId
+ return the value for alarmId. The value is device specific.
+
+
+
Class ASSOCIATION
+ - association groupId
+ return the list of nodeIds in the association group groupId in the form:
+ assocGroup_X:Max Y, Nodes id,id...
+
+
+ Class BASIC
+ - basicStatus
+ return the status of the node as basicReport:XY. The value (XY) depends on
+ the node, e.g a SWITCH_BINARY device report 00 for off and FF (255) for on.
+
+
+
Class BATTERY
+ - battery
+ return the charge of the battery in %, as battery:value %
+
+
+
Class CONFIGURATION
+ - config cfgAddress
+ return the value of the configuration parameter cfgAddress. The value is
+ device specific.
+
+
+
HRV_STATUS
+ - hrvStatus
+ report the current status (temperature, etc)
+
+ - hrvStatusSupported
+ report the supported status fields as a bitfield.
+
+
+
Class MULTI_CHANNEL
+ - mcEndpoints
+ return the list of endpoints available, e.g.:
+ mcEndpoints: total 2, identical
+
+ - mcCapability chid
+ return the classes supported by the endpoint/channel chid. If the channel
+ does not exists, create a FHEM node for it. Example:
+ mcCapability_02:SWITCH_BINARY
+ Note: This is the best way to create the secondary nodes of a
+ MULTI_CHANNEL device. The device is only created for channel 2 or greater.
+
+
+
Class SENSOR_ALARM
+ - alarm alarmType
+ return the nodes alarm status of the requested alarmType. 00 = GENERIC,
+ 01 = SMOKE, 02 = CO, 03 = CO2, 04 = HEAT, 05 = WATER, ff = returns the
+ nodes first supported alarm type.
+
+
+
Class SENSOR_BINARY
+ - sbStatus
+ return the status of the node, as state:open or state:closed.
+
+
+
Class SENSOR_MULTILEVEL
+ - smStatus
+ request data from the node (temperature/humidity/etc)
+
+
+
Class SWITCH_BINARY
+ - swbStatus
+ return the status of the node, as state:on or state:off.
+
+
+
Class SWITCH_MULTILEVEL
+ - swmStatus
+ return the status of the node, as state:on, state:off or state:dim value.
+
+
+
Class THERMOSTAT_MODE
+ - thermostatMode
+ request the mode
+
+
+
Class THERMOSTAT_SETPOINT
+ - setpoint
+ request the setpoint
+
+
+
Class VERSION
+ - version
+ return the version information of this node in the form:
+ Lib A Prot x.y App a.b
+
+
+
Class WAKE_UP
+ - wakeupInterval
+ return the wakeup interval in seconds, in the form
+ wakeupReport:interval seconds target id
+
+
+
+
+
+
+ Attributes
+
+
+
+
+ Generated events:
+
+
+
Class ALARM
+ - alarm_type_X:level Y
+
+
Class ASSOCIATION
+ - assocGroup_X:Max Y Nodes A,B,...
+
+ Class BASIC
+ - basicReport:XY
+
+
Class BATTERY
+ - battery:chargelevel %
+
+
Class CLOCK
+ - clock:get
+
+
Class CONFIGURATION
+ - config_X:Y
+
+
Class HRV_STATUS
+ - outdoorTemperature: %0.1f C
+ - supplyAirTemperature: %0.1f C
+ - exhaustAirTemperature: %0.1f C
+ - dischargeAirTemperature: %0.1f C
+ - indoorTemperature: %0.1f C
+ - indoorHumidity: %s %
+ - remainingFilterLife: %s %
+ - supportedStatus:
+
+
Class METER
+ - energy:val [kWh|kVAh|pulseCount]
+ - gas:val [m3|feet3|pulseCount]
+ - water:val [m3|feet3|USgallons|pulseCount]
+ - power:val W
+
+
Class MULTI_CHANNEL
+ - endpoints:total X $dynamic $identical
+ - mcCapability_X:class1 class2 ...
+
+
Class SENSOR_ALARM
+ - alarm_type_X:level Y node $nodeID seconds $seconds
+
+
Class SENSOR_BINARY
+ - state:open
+ - state:closed
+ - motion:00|ff
+ - tamper:00|ff
+
+
+
Class SENSOR_MULTILEVEL
+ - temperature $val [C|F]
+ - generalPurpose $val %
+ - luminance $val [%|Lux]
+ - power $val [W|Btu/h]
+ - humidity $val %
+ - velocity $val [m/s|mph]
+ - direction $val
+ - atmosphericPressure $val [kPa|inchHg]
+ - barometricPressure $val [kPa|inchHg]
+ - solarRadiation $val W/m2
+ - dewpoint $val [C|F]
+ - rain $val [mm/h|in/h]
+ - tideLevel $val [m|feet]
+ - weight $val [kg|pound]
+ - voltage $val [V|mV]
+ - current $val [A|mA]
+ - CO2-level $val ppm
+ - airFlow $val [m3/h|cfm]
+ - tankCapacity $val [l|cbm|usgal]
+ - distance $val [m|cm|feet]
+ - anglePosition $val [%|relN|relS]
+
+
Class SWITCH_BINARY
+ - state:on
+ - state:off
+
+
Class SWITCH_MULTILEVEL
+ - state:on
+ - state:off
+ - state:dim value
+
+
Class THERMOSTAT_MODE
+ - off
+ - cooling
+ - heating
+ - manual
+
+
Class THERMOSTAT_SETPOINT
+ - temperature:$temp [C|F] [heating|cooling]
+
+
Class VERSION
+ - version:Lib A Prot x.y App a.b
+
+
Class WAKE_UP
+ - wakeup:notification
+ - wakeupReport:interval:X target:Y
+
+
+
+
+
+ apptime
+
+ apptime
+
+
+ apptime provides information about application procedure execution time.
+ It is designed to identify long runner jobs causing latency as well as
+ overall high cpu usage jobs
+ No information about FHEM kernel times and delays will be provided.
+ Once started apptime monitors tasks. User may reset counter during operation.
+ apptime adds about 1% CPU load in average to FHEM.
+ in order to remove apptime shutdown restart is necessary.
+
+
+ Features:
+
+ apptime
+ apptime is started with the its first call nad continously monitor operation.
+ To unload apptime shutdown restart is necessary
+ apptime clear
+ reset all counter and start fom Zero
+ apptime [count|funktion|average|clear|max|name|total] [all]
+ display a table sorted by the field selected
+ all will display the complete table while by default only the top lines are printed.
+
+
+ Columns:
+
+ - name
+ name of the entity executing the procedure
+ if it is a function called by InternalTimer the name starts with tmr-.
+ by then it gives the name of the funktion to be called
+
+ - function
+ procedure name which was executed
+ if it is an InternalTimer call it gives its calling parameter
+
+ - max
+ longest duration measured for this procedure in ms
+ - count
+ number of calls for this procedure
+ - total
+ accumulated duration of this procedure over all calls monitored
+ - average
+ average time a call of this procedure takes
+ - maxDly
+ maximum delay of a timer call to its schedules time. This column is not relevant
+ for non-timer calls.
+ - param Max call
+ gives the parameter of the call with the max duration
+
+
+
+
+
+ at
+
+
+ Start an arbitrary FHEM command at a later time.
+
+
+
+ Define
+
+ define <name> at <timespec> <command>
+
+ <timespec> format: [+][*{N}]<timedet>
+
+ The optional + indicates that the specification is
+ relative(i.e. it will be added to the current time).
+ The optional * indicates that the command should be
+ executed repeatedly.
+ The optional {N} after the * indicates,that the command
+ should be repeated N-times only.
+ <timedet> is either HH:MM, HH:MM:SS or {perlfunc()}, where perlfunc
+ must return a HH:MM or HH:MM:SS date. Note: {perlfunc()} may not contain
+ any spaces or tabs.
+
+
+
+ Examples:
+
+ # absolute ones:
+ define a1 at 17:00:00 set lamp on # fhem command
+ define a2 at 17:00:00 { Log 1, "Teatime" } # Perl command
+ define a3 at 17:00:00 "/bin/echo "Teatime" > /dev/console" # shell command
+ define a4 at *17:00:00 set lamp on # every day
+
+ # relative ones
+ define a5 at +00:00:10 set lamp on # switch on in 10 seconds
+ define a6 at +00:00:02 set lamp on-for-timer 1 # Blink once in 2 seconds
+ define a7 at +*{3}00:00:02 set lamp on-for-timer 1 # Blink 3 times
+
+ # Blink 3 times if the piri sends a command
+ define n1 notify piri:on.* define a8 at +*{3}00:00:02 set lamp on-for-timer 1
+
+ # Switch the lamp on from sunset to 11 PM
+ define a9 at +*{sunset_rel()} set lamp on
+ define a10 at *23:00:00 set lamp off
+
+ # More elegant version, works for sunset > 23:00 too
+ define a11 at +*{sunset_rel()} set lamp on-till 23:00
+
+ # Only do this on weekend
+ define a12 at +*{sunset_rel()} { fhem("set lamp on-till 23:00") if($we) }
+
+ # Switch lamp1 and lamp2 on from 7:00 till 10 minutes after sunrise
+ define a13 at *07:00 set lamp1,lamp2 on-till {sunrise(+600)}
+
+ # Switch the lamp off 2 minutes after sunrise each day
+ define a14 at +{sunrise(+120)} set lamp on
+
+ # Switch lamp1 on at sunset, not before 18:00 and not after 21:00
+ define a15 at *{sunset(0,"18:00","21:00")} set lamp1 on
+
+
+
+ Notes:
+
+ - if no
* is specified, then a command will be executed
+ only once, and then the at entry will be deleted. In
+ this case the command will be saved to the statefile (as it
+ considered volatile, i.e. entered by cronjob) and not to the
+ configfile (see the save command.)
+
+
+ - if the current time is greater than the time specified, then the
+ command will be executed tomorrow.
+
+ - For even more complex date handling you either have to call fhem from
+ cron or filter the date in a perl expression, see the last example and
+ the section Perl special.
+
+
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+ - disable
+ Can be applied to at/watchdog/notify/FileLog devices.
+ Disables the corresponding at/notify or FileLog device. Note:
+ If applied to an at, the command will not be executed,
+ but the next time will be computed.
+
+
+ - disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...
+ Space separated list of HH:MM tupels. If the current time is between
+ the two time specifications, the current device is disabled. Instead of
+ HH:MM you can also specify HH or HH:MM:SS. To specify an interval
+ spawning midnight, you have to specify two intervals, e.g.:
+
+ 23:00-24:00 00:00-01:00
+
+
+
+
+ - skip_next
+ Used for at commands: skip the execution of the command the next
+ time.
+
+
+ - alignTime
+ Applies only to relative at definitions: adjust the time of the next
+ command execution so, that it will also be executed at the desired
+ alignTime. The argument is a timespec, see above for the
+ definition.
+ Example:
+
+ # Make sure that it chimes when the new hour begins
+ define at2 at +*01:00 set Chime on-for-timer 1
+ attr at2 alignTime 00:00
+
+
+
+
+
+
+
+
+
+ autocreate
+
+
+ Automatically create not yet defined fhem devices upon reception of a message
+ generated by this device. Note: devices which are polled (like the EMEM/EMWZ
+ accessed through the EM1010PC) will NOT be automatically created.
+
+
+
+
+ Define
+
+ define <name> autocreate
+
+
+ By defining an instance, the global attribute autoload_undefined_devices
+ is set, so that modules for unknnown devices are automatically loaded.
+ The autocreate module intercepts the UNDEFINED event generated by each
+ module, creates a device and optionally also FileLog and SVG
+ entries.
+ Note 1: devices will be created with a unique name, which contains
+ the type and a unique id for this type. When renaming
+ the device, the automatically created filelog and SVG devices
+ will also be renamed.
+ Note 2: you can disable the automatic creation by setting the
+ disable attribute, in this case only the rename
+ hook is active, and you can use the createlog
+ command to add FileLog and SVG to an already defined device.
+ Note 3: It makes no sense to create more than one instance of this
+ module.
+
+
+
+
+ Example:
+ define autocreate autocreate
+ attr autocreate autosave
+ attr autocreate device_room %TYPE
+ attr autocreate filelog test2/log/%NAME-%Y.log
+ attr autocreate weblink
+ attr autocreate weblink_room Plots
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+ - autosave
+ After creating a device, automatically save the config file with the
+ command save command. Default is 1 (i.e. on), set
+ it to 0 to switch it off.
+
+
+ - device_room
+ "Put" the newly created device in this room. The name can contain the
+ wildcards %TYPE and %NAME, see the example above.
+
+
+ - filelog
+ Create a filelog associated with the device. The filename can contain
+ the wildcards %TYPE and %NAME, see the example above. The filelog will
+ be "put" in the same room as the device.
+
+
+ - weblink
+ Create an SVG associated with the device/filelog.
+
+
+ - weblink_room
+ "Put" the newly created SVG in this room. The name can contain the
+ wildcards %TYPE and %NAME, see the example above.
+
+ - disable
+
+
+
+ - ignoreTypes
+ This is a regexp, to ignore certain devices, e.g. you neighbours FHT.
+ You can specify more than one, with usual regexp syntax, e.g.
+ attr autocreate ignoreTypes CUL_HOERMANN.*|FHT_1234|CUL_WS_7
+
+
+
+
+
+
+ createlog
+
+ Use this command to manually add a FileLog and an SVG to an existing
+ device.
+ This command is part of the autocreate module.
+
+
+
+
+ usb
+
+ Usage:
+
+ usb scan
+ usb create
+
+ This command will scan the /dev directory for attached USB devices, and
+ will try to identify them. With the argument scan you'll get back a list
+ of fhem commands to execute, with the argument create there will be no
+ feedback, and the devices will be created instead.
+
+ Note that switching a CUL to HomeMatic mode is still has to be done
+ manually.
+
+ On Linux it will also check with the lsusb command, if unflashed CULs are
+ attached. If this is the case, it will call CULflash with the appropriate
+ parameters (or display the CULflash command if scan is specified). The
+ usb command will only flash one device per call.
+
+ This command is part of the autocreate module.
+
+
+
+
+
+ average
+
+
+ Compute additional average, minimum and maximum values for current day and
+ month.
+
+
+
+
+ Define
+
+ define <name> average <regexp>
+
+
+ The syntax for <regexp> is the same as the
+ regexp for notify.
+ If it matches, and the event is of the form "eventname number", then this
+ module computes the daily and monthly average, maximum and minimum values
+ and generates events of the form
+
+ <device> <eventname>_avg_day: <computed_average>
+
+
+ <device> <eventname>_min_day: <minimum day value>
+
+
+ <device> <eventname>_max_day: <maximum day value>
+
+ and
+
+ <device> <eventname>_avg_month: <computed_average>
+
+
+ <device> <eventname>_min_month: <minimum month value>
+
+
+ <device> <eventname>_max_month: <maximum month value>
+
+
+ at the beginning of the next day or month respectively.
+ The current average, minimum, maximum and the cumulated values are stored
+ in the device readings.
+
+
+
+ Example:
+ # Compute the average, minimum and maximum for the temperature events of
+ # the ws1 device
+ define avg_temp_ws1 average ws1:temperature.*
+
+ # Compute the average, minimum and maximum for each temperature event
+ define avg_temp_ws1 average .*:temperature.*
+
+ # Compute the average, minimum and maximum for all temperature and humidity events
+ # Events:
+ # ws1 temperature: 22.3
+ # ws1 humidity: 67.4
+ define avg_temp_ws1 average .*:(temperature|humidity).*
+
+ # Compute the same from a combined event. Note: we need two average
+ # definitions here, each of them defining the name with the first
+ # paranthesis, and the value with the second.
+ #
+ # Event: ws1 T: 52.3 H: 67.4
+ define avg_temp_ws1_t average ws1:(T):.([-\d\.]+).*
+ define avg_temp_ws1_h average ws1:.*(H):.([-\d\.]+).*
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+ Generated events:
+
+ - <eventname>_avg_day: $avg_day
+ - <eventname>_avg_month: $avg_month
+ - <eventname>_min_day: $min_day
+ - <eventname>_min_month: $min_month
+ - <eventname>_max_day: $max_day
+ - <eventname>_max_month: $max_month
+
+
+
+
+
+ backup
+
+ backup
+
+ The complete FHEM directory (containing the modules), the WebInterface
+ pgm2 (if installed) and the config-file will be saved into a .tar.gz
+ file by default. The file is stored with a timestamp in the
+ modpath/backup directory or to a directory
+ specified by the global attribute backupdir.
+ Note: tar and gzip must be installed to use this feature.
+
+
+ If you need to call tar with support for symlinks, you could set the
+ global attribute backupsymlink to everything
+ else as "no".
+
+
+ You could pass the backup to your own command / script by using the
+ global attribute backupcmd.
+
+
+
+
+
+
+ cloneDummy
+
+ This module provides a cloneDummy which will receive readings from any other device sending data to fhem.
+ E.g. may be used in an FHEM2FHEM environment
+
+
+
+ Define
+
+ define <cloneDevice> cloneDummy <sourceDevice> [reading]
+
+
+ Example:
+
+ define clone_OWX_26_09FF26010000 cloneDummy OWX_26_09FF26010000
+
+ Optional parameter [reading] will be written to STATE if provided.
+
+ Example:
+
+ define clone_OWX_26_09FF26010000 cloneDummy OWX_26_09FF26010000 temperature
+
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+ - readingFnAttributes
+ - cloneIgnore - comma separated list of readingnames that will NOT be generated.
+ Usefull to prevent truncated readingnames coming from state events.
+
+
+ Important: You MUST use different names for cloneDevice and sourceDevice!
+
+
+
+ cmdalias
+
+ create new commands or replace internal ones.
+
+
+
+ Define
+
+ define <name> cmdalias <cmd> [parameter]
+ AS newcommand..."
+
+
+ parameter is optional and is a regexp which must match the command
+ entered.
+ If it matches, then the specified newcommand will be executed, which is
+ a fhem command (see Fhem command types for
+ details). Like in the notify commands, $EVENT or
+ $EVTPART may be used, in this case representing the command arguments as
+ whole or the unique words entered.
+ Notes:
+ - newcommand may contain cmd, but recursion is not allowed.
+ - if there are multiple definitions, they are checked/executed in
+ alphabetically sorted name oder.
+
+ Examples:
+
+ define s1 cmdalias shutdown update AS save;;shutdown
+ define s2 cmdalias set lamp .* AS { Log 1, "$EVENT";; fhem("set $EVENT") }
+
+
+
+
+
+
+ configDB
+
+
+
+ configdb
+
+ Starting with version 5079, fhem can be used with a configuration database instead of a plain text file (e.g. fhem.cfg).
+ This offers the possibility to completely waive all cfg-files, "include"-problems and so on.
+ Furthermore, configDB offers a versioning of several configuration together with the possibility to restore a former configuration.
+ Access to database is provided via perl's database interface DBI.
+
+ Prerequisits / Installation
+
+ - Please install perl package Text::Diff if not already installed on your system.
+ - You must have access to a SQL database. Supported database types are SQLITE, MYSQL and POSTGRESQL.
+ - The corresponding DBD module must be available in your perl environment,
+ e.g. sqlite3 running on a Debian systems requires package libdbd-sqlite3-perl
+ - Create an empty database, e.g. with sqlite3:
+
+ mba:fhem udo$ sqlite3 configDB.db
+
+ SQLite version 3.7.13 2012-07-17 17:46:21
+ Enter ".help" for instructions
+ Enter SQL statements terminated with a ";"
+ sqlite> pragma auto_vacuum=2;
+ sqlite> .quit
+
+ mba:fhem udo$
+
+ - The database tables will be created automatically.
+ - Create a configuration file containing the connection string to access database.
+
+ IMPORTANT:
+
+ - This file must be named "configDB.conf"
+ - This file must be located in your fhem main directory, e.g. /opt/fhem
+
+
+
+## for MySQL
+################################################################
+#%dbconfig= (
+# connection => "mysql:database=configDB;host=db;port=3306",
+# user => "fhemuser",
+# password => "fhempassword",
+#);
+################################################################
+#
+## for PostgreSQL
+################################################################
+#%dbconfig= (
+# connection => "Pg:database=configDB;host=localhost",
+# user => "fhemuser",
+# password => "fhempassword"
+#);
+################################################################
+#
+## for SQLite (username and password stay empty for SQLite)
+################################################################
+#%dbconfig= (
+# connection => "SQLite:dbname=/opt/fhem/configDB.db",
+# user => "",
+# password => ""
+#);
+################################################################
+
+
+
+ Start with a complete new "fresh" fhem Installation
+
+ It's easy... simply start fhem by issuing following command:
+
+
+ configDB is a keyword which is recognized by fhem to use database for configuration.
+
+ That's all. Everything (save, rereadcfg etc) should work as usual.
+
+
+
+ or:
+
+
+ Migrate your existing fhem configuration into the database
+
+ It's easy, too...
+
+ - start your fhem the last time with fhem.cfg
+
+
+ - transfer your existing configuration into the database
+ enter
configdb migrate
+
+ into frontend's command line
+ Be patient! Migration can take some time, especially on mini-systems like RaspberryPi or Beaglebone.
+ Completed migration will be indicated by showing database statistics.
+ Your original configfile will not be touched or modified by this step.
+ - shutdown fhem
+ - restart fhem with keyword configDB
+
+ configDB is a keyword which is recognized by fhem to use database for configuration.
+
+ That's all. Everything (save, rereadcfg etc) should work as usual.
+
+
+
+ Additional functions provided
+
+ A new command configdb is propagated to fhem.
+ This command can be used with different parameters.
+
+
+ configdb attr [attribute] [value]
+ Provides the possibility to pass attributes to backend and frontend.
+
+ configdb attr private 1 - set the attribute named 'private' to value 1.
+
+ configdb attr private - delete the attribute named 'private'
+
+ configdb attr - show all defined attributes.
+
+ Currently, only one attribute is supported. If 'private' is set to 1 the user and password info
+ will not be shown in 'configdb info' output.
+
+
+ configdb backup
+ Replaces fhem's default backup process, since backup is no longer supported
+ with activated configDB.
+
+ Important:
+ Please be aware you are responsible for data backup of your database yourself!
+ The backup command can and will not do this job for you!
+
+
+ configdb diff <device> <version>
+ Compare configuration dataset for device <device>
+ from current version 0 with version <version>
+ Example for valid request:
+
+ get configDB telnetPort 1
+
+ will show a result like this:
+
+compare device: telnetPort in current version 0 (left) to version: 1 (right)
++--+--------------------------------------+--+--------------------------------------+
+| 1|define telnetPort telnet 7072 global | 1|define telnetPort telnet 7072 global |
+* 2|attr telnetPort room telnet * | |
++--+--------------------------------------+--+--------------------------------------+
+
+ configdb export <targetFilename> [version];
+ Exports specified version from config database into file <targetFilename>
+ Default version if not specified = 0
+ The target file can be imported again, if needed.
+
+
+ configdb info
+ Returns some database statistics
+
+--------------------------------------------------------------------------------
+ configDB Database Information
+--------------------------------------------------------------------------------
+ dbconn: SQLite:dbname=/opt/fhem/configDB.db
+ dbuser:
+ dbpass:
+ dbtype: SQLITE
+--------------------------------------------------------------------------------
+ fhemconfig: 7707 entries
+
+ Ver 0 saved: Sat Mar 1 11:37:00 2014 def: 293 attr: 1248
+ Ver 1 saved: Fri Feb 28 23:55:13 2014 def: 293 attr: 1248
+ Ver 2 saved: Fri Feb 28 23:49:01 2014 def: 293 attr: 1248
+ Ver 3 saved: Fri Feb 28 22:24:40 2014 def: 293 attr: 1247
+ Ver 4 saved: Fri Feb 28 22:14:03 2014 def: 293 attr: 1246
+--------------------------------------------------------------------------------
+ fhemstate: 1890 entries saved: Sat Mar 1 12:05:00 2014
+--------------------------------------------------------------------------------
+
+Ver 0 always indicates the currently running configuration.
+
+
+ configdb list [device] [version]
+ Search for device named [device] in configuration version [version]
+ in database archive.
+ Default value for [device] = % to show all devices.
+ Default value for [version] = 0 to show devices from current version.
+ Examples for valid requests:
+
+ get configDB list
+ get configDB list global
+ get configDB list '' 1
+ get configDB list global 1
+
+
+ configdb recover <version>
+ Restores an older version from database archive.
+ set configDB recover 3 will copy version #3 from database
+ to version #0.
+ Original version #0 will be lost.
+ Important!
+ The restored version will NOT be activated automatically!
+ You must do a rereadcfg or - even better - shutdown restart yourself.
+
+
+ configdb reorg [keep]
+ Deletes all stored versions with version number higher than [keep].
+ Default value for optional parameter keep = 3.
+ This function can be used to create a nightly running job for
+ database reorganisation when called from an at-Definition.
+
+
+ configdb uuid
+ Returns a uuid that can be used for own purposes.
+
+
+
+
+
+ Author's notes
+
+
+ - You can find two template files for datebase and configfile (sqlite only!) for easy installation.
+ Just copy them to your fhem installation directory (/opt/fhem) and have fun.
+
+ - The frontend option "Edit files"->"config file" will be removed when running configDB.
+
+ - Please be patient when issuing a "save" command
+ (either manually or by clicking on "save config").
+ This will take some moments, due to writing version informations.
+ Finishing the save-process will be indicated by a corresponding message in frontend.
+
+ - There still will be some more (planned) development to this extension,
+ especially regarding some perfomance issues.
+
+ - Have fun!
+
+
+
+
+
+ dewpoint
+
+ Dewpoint calculations. Offers three different ways to use dewpoint:
+
+ - dewpoint
+ Compute additional event dewpoint from a sensor offering temperature and humidity.
+ - fan
+ Generate a event to turn a fan on if the outside air has less water than the inside.
+ - alarm
+ Generate a mold alarm if a reference temperature is lower that the current dewpoint.
+
+
+
+
+ Define
+
+ define <name> dewpoint dewpoint <devicename-regex> [<temp_name> <hum_name> <new_name>]
+
+
+ Calculates dewpoint for device <devicename-regex> from temperature and humidity
+ and write it to a new reading named dewpoint.
+ If optional <temp_name>, <hum_name> and <new_name> is specified
+ then read temperature from reading <temp_name>, humidity from reading <hum_name>
+ and write the calculated dewpoint to reading <new_name>.
+ If <temp_name> is T then use temperature from state T: H:, add <new_name> to the state.
+
+
+
+ Example:
+ # Compute the dewpoint for the temperature/humidity
+ # events of the temp1 device and generate reading dewpoint.
+ define dew_temp1 dewpoint dewpoint temp1
+ define dew_temp1 dewpoint dewpoint temp1 temperature humidity dewpoint
+
+ # Compute the dewpoint for the temperature/humidity
+ # events of all devices offering temperature and humidity
+ # and generate reading dewpoint.
+ define dew_all dewpoint dewpoint .*
+ define dew_all dewpoint dewpoint .* temperature humidity dewpoint
+
+ # Compute the dewpoint for the temperature/humidity
+ # events of the device Aussen_1 offering temperature and humidity
+ # and insert is into STATE.
+ define dew_state dewpoint dewpoint Aussen_1 T H D
+
+ # Compute the dewpoint for the temperature/humidity
+ # events of all devices offering temperature and humidity
+ # and insert the result into the STATE.
+ # Example STATE: "T: 10 H: 62.5" will change to
+ # "T: 10 H: 62.5 D: 3.2"
+ define dew_state dewpoint dewpoint .* T H D
+
+
+
+
+
+ define <name> dewpoint fan <devicename-regex> <devicename-outside> <min-temp> [<diff_temp>]
+
+
+ May be used to turn an fan on or off if the outside air has less water.
+
+ -
+ Generate event "fan: on" if (dewpoint of <devicename-outside>) + <diff_temp> is lower
+ than dewpoint of <devicename> and temperature of <devicename-outside> is >= min-temp
+ and reading "fan" was not already "on". The event will be generated for <devicename>. Parameter <diff-temp> is optional
+ - Generate event "fan: off": else and if reading "fan" was not already "off".
+
+
+
+
+ Example:
+ # Generate event "fan: on" when dewpoint of Aussen_1 is first
+ # time lower than basement_tempsensor and outside temperature is >= 0
+ # and change it to "fan: off" is this condition changes.
+ # Set a switch on/off (fan_switch) depending on the state.
+ define dew_fan1 dewpoint fan basement_tempsensor Aussen_1 0
+ define dew_fan1_on notify basement_tempsensor.*fan:.*on set fan_switch on
+ define dew_fan1_off notify basement_tempsensor.*fan:.*off set fan_switch off
+
+
+
+
+
+ define <name> dewpoint alarm <devicename-regex> <devicename-reference> <diff-temp>
+
+
+ Generate a mold alarm if a reference temperature is lower that the current dewpoint.
+
+ -
+ Generate reading/event "alarm: on" if temperature of <devicename-reference> - <diff-temp> is lower
+ than dewpoint of <devicename> and reading "alarm" was not already "on". The event will be generated for <devicename>.
+ - Generate reading/event "alarm: off" if temperature of <devicename-reference> - <diff-temp> is higher than dewpoint of <devicename> and reading "alarm" was not already "off".
+
+
+
+
+ Example:
+ # Using a wall temperature sensor (wallsensor) and a temp/hum sensor
+ # (roomsensor) to alarm if the temperature of the wall is lower than
+ # the dewpoint of the air. In this case the water of the air will
+ # condense on the wall because the wall is cold.
+ # Set a switch on (alarm_siren) if alarm is on using notify.
+ 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
+
+ # If you do not have a temperature sensor in/on the wall, you may also
+ # compare the rooms dewpoint to the temperature of the same or another
+ # inside sensor. Alarm is temperature is 5 degrees colder than the
+ # inside dewpointinside.
+ define dev_alarm2 dewpoint alarm roomsensor roomsensor 5
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+ dummy
+
+
+ Define a dummy. A dummy can take via set any values.
+ Used for programming.
+
+
+
+ Define
+
+ define <name> dummy
+
+
+ Example:
+
+ define myvar dummy
+ set myvar 7
+
+
+
+
+
+ Set
+
+ set <name> <value>
+ Set any value.
+
+
+
+
+ Get
+
+
+ Attributes
+
+ - setList
+ Space separated list of commands, which will be returned upon "set name ?",
+ so the FHEMWEB frontend can construct a dropdown and offer on/off
+ switches. Example: attr dummyName setList on off
+
+ - readingFnAttributes
+
+
+
+
+
+
+ eventTypes
+
+
+
+ Define
+
+ define <name> eventTypes <filename>
+
+ Collect event types for all devices. This service is used by frontends.
+ The filename is used to store the collected events before shutdown.
+ More than one instance of eventTypes should not be necessary.
+ Examples:
+
+ define et eventTypes log/eventTypes.txt
+
+
+
+
+
+
+ Set
+
+
+ Get
+
+ - list [devicename]
+ return the list of collected event types for all devices or for
+ devicename if specified.
+
+
+
+
+
+ Attributes
+
+
+
+
+
+
+ fheminfo
+
+ fheminfo [send]
+
+
+ fheminfo displays information about the system and FHEM definitions.
+
+
+ The optional parameter send transmitts the collected data
+ to a central server in order to support the development of FHEM. The
+ transmitted data is processed graphically. The results can be viewed
+ on http://fhem.de/stats/statistics.cgi.
+ Based on the IP address, the approximate location is determined with
+ an accuracy of about 40-80 km. The IP address is not saved.
+
+
+ Features:
+
+ - Operating System Information
+ - Hardware architecture
+ - Installed Perl version
+ - Installed FHEM release and branch
+ - Defined modules (only official FHEM Modules are counted)
+ - Defined models per module
+
+
+ Example:
+
+ fhem> fheminfo
+ Fhem info:
+ Release : 5.3
+ Branch : DEVELOPMENT
+ OS : linux
+ Arch : i686-linux-gnu-thread-multi-64int
+ Perl : v5.14.2
+ uniqueID : 87c5cca38dc75a4f388ef87bdcbfbf6f
+
+ Defined modules:
+ ACU : 1
+ CUL : 1
+ CUL_FHTTK : 12
+ CUL_HM : 66
+ CUL_WS : 3
+ FHEM2FHEM : 1
+ FHEMWEB : 3
+ FHT : 9
+ [...]
+ at : 4
+ autocreate : 1
+ dummy : 23
+ notify : 54
+ structure : 3
+ telnet : 2
+ watchdog : 9
+ weblink : 17
+
+ Defined models per module:
+ CUL : CUN
+ CUL_FHTTK : FHT80TF
+ CUL_HM : HM-CC-TC,HM-CC-VD,HM-LC-DIM1T-CV,HM-LC-DIM1T-FM,HM-LC-SW1-PL,[...]
+ CUL_WS : S555TH
+ FHT : fht80b
+ FS20 : fs20pira,fs20s16,fs20s4a,fs20sd,fs20st
+ HMS : hms100-mg,hms100-tf,hms100-wd
+ KS300 : ks300
+ OWSWITCH : DS2413
+
+
+
+
+ Attributes
+
+
+ The following attributes are used only in conjunction with the
+ send parameter. They are set on attr global .
+
+
+
+ - uniqueID
+ A randomly generated ID (16 pairs of hash values), e.g.
+ 87c5cca38dc75a4f388ef87bdcbfbf6f which is assigned to the transmitted
+ data to prevent duplicate entries.
+
+ The uniqueID is stored automatically in a file named FhemUtils/uniqueID
+ in FHEM's modules path.
+
+ IMPORTANT NOTE:
+
+ Every installation of FHEM should have to have his own unique ID.
+
+ Please do not modify, move or delete this file! You should always backup this file
+ (this is normally done by the update command automatically) and please restore
+ this file to the same path (FhemUtils in FHEM's modules path), if you plan to
+ reinstall your FHEM installation. This prevents duplicate entries for identical
+ installations on the same hardware in the statistics.
+
+ Otherwise, please use different unique IDs for each installation of FHEM on different
+ hardware, e.g. one randomly generated unique ID for FRITZ!Box, another one for the first
+ Raspberry Pi, another one for the second Raspberry Pi, etc.
+
+ Thanks for your support!
+
+
+ - sendStatistics
+ This attribute is used in conjunction with the update command.
+
+ onUpdate : transfer of data on every update (recommended setting).
+
+ manually : manually transfer of data via the fheminfo send command.
+
+ never : prevents transmission of data at anytime.
+
+
+
+
+
+
+ geodata
+
+
+ Collect some location based data from various internet sources.
+ Data will be updated once an hour.
+
+ - openweathermap will always be used.
+ - wunderground api will be used, if wunderground api key is provided by attribute.
+ - google api will be used, if google api key is provided by attribute.
+ Currently google's elevation api and timezone api are used, so check access to those apis for your api key.
+
+
+
+
+ Define
+
+ define <location> latitude longitude
+
+
+
+ Set
+
+
+
+
+ Get
+
+
+
+
+ Attributes
+
+
+ - geo_owoGetUrl - used to correct owo api url manually, normally not needed.
+ - geo_wuApiKey - enter your wunderground api key to access wunderground data.
+ - geo_googleApiKey - enter your google api key to access google api.
+ - geo_language:de,en - select language to be used if supported by api.
+
+
+
+
+
+
+
+ holiday
+
+
+ Define
+
+ define <name> holiday
+
+ Define a set of holidays. The module will try to open the file
+ <name>.holiday in the modpath/FHEM directory.
+ If entries in the holiday file match the current day, then the STATE of
+ this holiday instance displayed in the list command
+ will be set to the corresponding values, else the state is set to the text
+ none. Most probably you'll want to query this value in some perl script:
+ see Value() in the perl section or the global attribute
+ holiday2we. The file will be reread once
+ every night, to compute the value for the current day, and by each get
+ command (see below).
+
+
+ Holiday file definition:
+ The file may contain comments (beginning with #) or empty lines.
+ Significant lines begin with a number (type) and contain some space
+ separated words, depending on the type. The different types are:
+
+ - 1
+ Exact date. Arguments: <MM-DD> <holiday-name>
+ Exampe: 1 12-24 Christmas
+
+ - 2
+ Easter-dependent date. Arguments: <day-offset>
+ <holiday-name>.
+ The offset is counted from Easter-Sunday.
+
+ Exampe: 2 1 Easter-Monday
+ Sidenote: You can check the easter date with:
+ fhem> { join("-", western_easter(2011)) }
+
+ - 3
+ Month dependent date. Arguments: <nth> <weekday>
+ <month <holiday-name>.
+ Examples:
+
+ 3 1 Mon 05 First Monday In May
+ 3 2 Mon 05 Second Monday In May
+ 3 -1 Mon 05 Last Monday In May
+ 3 0 Mon 05 Each Monday In May
+
+
+ - 4
+ Interval. Arguments: <MM-DD> <MM-DD> <holiday-name>
+ .
+ Example:
+
+ 4 06-01 06-30 Summer holiday
+
+
+ - 5
+ Date relative, weekday fixed holiday. Arguments: <nth>
+ <weekday> <month> <day> < holiday-name>
+ Note that while +0 or -0 as offsets are not forbidden, their behaviour
+ is undefined in the sense that it might change without notice.
+ Examples:
+
+ 5 -1 Wed 11 23 Buss und Bettag (first Wednesday before Nov, 23rd)
+ 5 1 Mon 01 31 First Monday after Jan, 31st (1st Monday in February)
+
+
+
+ See also he.holiday in the contrib directory for official holidays in the
+ german country of Hessen, and by.holiday for the Bavarian definition.
+
+
+
+
+ Set
+
+
+ Get
+
+ get <name> <MM-DD>
+ get <name> yesterday
+ get <name> today
+ get <name> tomorrow
+
+ Return the holiday name of the specified date or the text none.
+
+
+
+
+
+ Attributes
+
+
+
+
+ mailcheck
+
+ Watches a mailbox with imap idle and for each new mail triggers an event with the subject of this mail.
+ This can be used to send mails *to* FHEM and react to them from a notify. Application scenarios are for example
+ a geofencing apps on mobile phones, networked devices that inform about warning or failure conditions by e-mail or
+ (with a little logic in FHEM) the absence of regular status messages from such devices and so on.
+
+ Notes:
+
+ - Mail::IMAPClient and IO::Socket::SSL and IO::Socket::INET hast to be installed on the FHEM host.
+ - Probably only works reliably if no other mail programm is marking messages as read at the same time.
+ - If you experience a hanging system caused by regular forced disconnects of your internet provider you
+ can disable and enable the mailcheck instance with an at.
+ - If MIME::Parser is installed non ascii subjects will be docoded to utf-8
+ - If MIME::Parser and Mail::GnuPG are installed gpg signatures can be checked and mails from unknown senders can be ignored.
+
+
+
+ Define
+
+ define <name> mailcheck <host> <user> <password> [<folder>]
+
+
+ Defines a mailcheck device.
+
+ Examples:
+
+ define mailcheck mailcheck imap.mail.me.com x.y@me.com
+
+
+
+
+ Readings
+
+ - Subject
+ the subject of the last mail received
+
+
+
+ Get
+
+ - update
+ trigger an update
+ - folders
+ list available folders
+
+
+
+ Attributes
+
+ - delete_message
+ 1 -> delete message after Subject reading is created
+ - interval
+ the interval in seconds used to trigger an update on the connection.
+ if idle is supported the defailt is 600, without idle support the default is 60. the minimum is 60.
+ - nossl
+ 1 -> don't use ssl.
+ - disable
+ 1 -> disconnect and stop polling
+ - debug
+ 1 -> enables debug output. default target is stdout.
+ - logfile
+ set the target for debug messages if debug is enabled.
+ - accept_from
+ comma separated list of gpg keys that will be accepted for signed messages. Mail::GnuPG and MIME::Parser have to be installed
+
+
+
+
+ netatmo
+
+ xxx
+
+ Notes:
+
+ - JSON has to be installed on the FHEM host.
+
+
+
+ Define
+
+ define <name> netatmo <device>
+ define <name> netatmo [ACCOUNT] <username> <password> <client_id> <client_secret>
+
+
+ Defines a netatmo device.
+ If a netatmo device of the account type is created all fhem devices for the netatmo devices are automaticaly created.
+
+
+ Examples:
+
+ define netatmo netatmo ACCOUNT abc@test.com myPassword 2134123412399119d4123134 AkqcOIHqrasfdaLKcYgZasd987123asd
+ define netatmo netatmo 2f:13:2b:93:12:31
+ define netatmo netatmo MODULE 2f:13:2b:93:12:31 f1:32:b9:31:23:11
+
+
+
+
+ Readings
+
+ - co2
+ - battery
+ - batteryLevel
+
+
+
+ Get
+
+ - update
+ trigger an update
+
+
+
+ Attributes
+
+ - interval
+ the interval in seconds used to check for new values.
+ - disable
+ 1 -> stop polling
+
+
+
+
+ notice
+
+ notice [confirm [value]|list [<keyword>]|reset [yes]|view <id> [noheader|[de|en]]]
+
+ View and confirmation of system messages.
+
+
+ During an update or a system start from FHEM sometimes it is necessary to
+ inform the user about important changes or additions. It may be necessary
+ to confirm a system message by the user.
+
+
+ By entering the command 'notice ' a list of all messages is displayed.
+ Are messages available in different languages, they are ordered by language.
+
+ Example:
+
+ fhem> notice
+ ==> Language: de
+ ID Published Expired Confirmed Description
+ advice-20130128-002 actually never not needed kurze beschreibung
+ update-20130128-002 31.01.2013 01.02.2013 no kurze beschreibung
+
+ ==> Language: en
+ ID Published Expired Confirmed Description
+ advice-20130128-001 actually never no short description
+ advice-20130128-002 actually never not needed short description
+ update-20130128-001 actually never no short description
+ update-20130128-002 31.01.2013 01.02.2013 no short description
+
+ By entering 'notice list <keyword> ' the output of the list contains only
+ available messages that starts with '<keyword> '.
+
+ Example:
+
+ fhem> notice list update
+ ==> Language: de
+ ID Published Expired Confirmed Description
+ update-20130128-002 31.01.2013 01.02.2013 no kurze beschreibung
+
+ ==> Language: en
+ ID Published Expired Confirmed Description
+ update-20130128-001 actually never no short description
+ update-20130128-002 31.01.2013 01.02.2013 no short description
+
+ To display a single message, enter the command 'notice view <id> ' where id
+ is the Identifier of the message. You can use the optional parameter noheader
+ or the language codes de or en to display the message
+ without the header informations or in your prefered language if available.
+
+ Example:
+
+ fhem> notice view advice-20130128-002 de
+ ID : advice-20130128-002
+ From : M. Fischer
+ Date : 28.01.2013
+ Expire : 0
+ Title : kurze beschreibung
+ ### Start of Text
+ test-advice
+
+ dies ist ein test
+
+ 001
+ ### End of Text
+
+ If it is necessary to confirm a message, this is be done by entering 'notice confirm <id> [value] '.
+ The optional argument value will also be stored with the confirmation.
+
+ Example:
+
+ fhem> notice confirm update-20130128-001 foo:bar
+ update-20130128-001 confirmed on 2013-01-29 20:58:57: foo:bar
+
+ Sometimes it is necessary to reset all confirmations. This is be done by entering
+ 'notice reset '.
+
+ Example:
+
+ fhem> notice reset
+ This command delete all confirmations.
+ If you really want to do this, call 'notice reset yes'
+
+
+ For developers only:
+
+
+ notice [condition <id>|get <keyword> <value>|position <id>]
+
+
+ These arguments are normally not needed by any user.
+
+
+ A message may optionally contains one or more code snippets. The argument condition supplies the determined
+ value(s) of the embedded test(s) as a key:value pair. If more than one pair returned, they they are seperated by | .
+ It is possible to define your own rules for a condition, like !empty or >>5 and so on. An example
+ of a condition is shown in the below example message file.
+ Example:
+
+ fhem> notice condition update-20130127-001
+ configfile:./fhem.cfg|sendStatistics:never:!empty
+
+ The argument get , followed by a keyword and a number from 0 to 8, returns a
+ comma seperated list of message ids.
+ The possible outputs are:
+
+ 0 returns a list of all messages.
+ 1 returns a list of unconfirmed messages.
+ 2 returns a list of messages that are not expired.
+ 3 returns a list of messages that are not expired and unconfirmed.
+ 4 returns a list of published messages.
+ 5 returns a list of unconfirmed and published messages.
+ 6 returns a list of published messages that are not expired.
+ 7 returns a list of published, unconfirmed and not expired messages.
+ 8 returns a list of confirmed messages.
+
+ Example:
+
+ fhem> notice get all 2
+ advice-20130128-001,advice-20130128-002,update-20130128-001,update-20130128-002
+
+ The argument position followed by an <id> returns the view position of a message if defined.
+
+ Example:
+
+ fhem> notice position update-20130128-001
+ before
+
+ Example of a message file:
+
+ # FROM: M. Fischer
+ # DATE: 28.01.2013
+ # CONFIRM: 1
+ # PUBLISH: 31.01.2013
+ # EXPIRE: 01.02.2013
+ # KEY_1: sendStatistics
+ # VAL_1: AttrVal("global","sendStatistics",undef);
+ # CON_1: !empty
+ # KEY_2: configfile
+ # VAL_2: AttrVal("global","configfile",undef);
+ # POSITION: top
+ # TITLE_DE: kurze beschreibung
+ # NOTICE_DE
+ Hinweis:
+
+ dies ist ein test
+ # TITLE_EN: short description
+ # NOTICE_EN
+ Advice:
+
+ this is a test
+
+ The keywords 'FROM, DATE, CONFIRM, PUBLISH, EXPIRE, TITLE_DE, TITLE_EN, NOTICE_DE, NOTICE_EN ' are fixed.
+ It is possible to add any key:value string to these files. Also it is possible to set only one or both keywords of
+ 'TITLE_DE, TITLE_EN ' and 'NOTICE_DE, NOTICE_EN '.
+
+
+
+ notify
+
+
+
+
+ Define
+
+ define <name> notify <pattern> <command>
+
+ Execute a command when received an event for the definition <pattern> . If
+ <command> is enclosed in {}, then it is a perl expression, if it is
+ enclosed in "", then it is a shell command, else it is a "plain" fhem.pl
+ command (chain). See the trigger command for
+ testing it.
+
+ Examples:
+
+ 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""
+
+
+
+ Notes:
+
+ <pattern> is either the name of the triggering
+ device, or devicename:event .
+
+ <pattern> must completely (!)
+ match either the device name, or the compound of the device name and the
+ event. To identify the events use "inform" command in telnet or "Event
+ Monitor" in FHEMWEB.
+ - in the command section you can access the event:
+
+ - The variable $EVENT will contain the complete event, e.g.
+
measured-temp: 21.7 (Celsius)
+ - $EVTPART0,$EVTPART1,$EVTPART2,etc contain the space separated event
+ parts (e.g.
$EVTPART0="measured-temp:", $EVTPART1="21.7",
+ $EVTPART2="(Celsius)" . This data is available as a local
+ variable in perl, as environment variable for shell scripts, and will
+ be textually replaced for FHEM commands.
+ - $NAME contains the device triggering the event, e.g.
+
myFht
+
+
+ - Note: the following is deprecated and will be removed in a future
+ release. The described replacement is attempted if none of the above
+ variables ($NAME/$EVENT/etc) found in the command.
+
+ - The character
% will be replaced with the received
+ event, e.g. with on or off or
+ measured-temp: 21.7 (Celsius) It is advisable to put
+ the % into double quotes, else the shell may get a syntax
+ error.
+
+ - The character
@ will be replaced with the device
+ name.
+
+ - To use % or @ in the text itself, use the double mode (%% or
+ @@).
+
+ - Instead of
% and @ , the parameters
+ %EVENT (same as % ), %NAME (same
+ as @ ) and %TYPE (contains the device type,
+ e.g. FHT ) can be used. The space separated event "parts"
+ are available as %EVTPART0, %EVTPART1, etc. A single %
+ looses its special meaning if any of these parameters appears in the
+ definition.
+
+
+ - To use database logging, define a dblog instance and change the
+ $dbconn parameter in the file.
+
+ - Following special events will be generated for the device "global"
+
+ - INITIALIZED after initialization is finished.
+ - DEFINED <devname> after a device is defined.
+ - DELETED <devname> after a device was deleted.
+ - RENAMED <old> <new> after a device was renamed.
+ - UNDEFINED <defspec> upon reception of a message for an
+ undefined device.
+
+
+ - Notify can be used to store macros for manual execution. Use the trigger command to execute the macro.
+ E.g.
+ fhem> define MyMacro notify MyMacro { Log 1, "Hello"}
+ fhem> trigger MyMacro
+
+
+
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+ - disable
+ - disabledForIntervals
+
+
+ - forwardReturnValue
+ Forward the return value of the executed command to the caller,
+ default is disabled (0). If enabled (1), then e.g. a set command which
+ triggers this notify will also return this value. This can cause e.g
+ FHEMWEB to display this value, when clicking "on" or "off", which is
+ often not intended.
+
+ - showTriggerTime
+ Replace STATE content 'active' by timestamp of last execution.
+
+
+
+
+
+
+ openweathermap
+
+
+ Prerequisits
+
+
+ - Module uses following additional Perl modules:
+ XML::Simple, JSON
+ If not already installed in your environment, please install them using appropriate commands from your environment.
+ Use of JSON is optional. You can activate it by setting attribute owoUseXml to 0
+ - please check global attributes latitude, longitude and altitude are set correctly
+ - you can use all task alone, in any combination or all together
+
+
+
+
+ Define
+
+
+ define <name> openweathermap
+
+ This module provides connection to openweathermap-network www.openweathermap.org (owo)
+ You can use this module to do three different tasks:
+
+
+ - 1. send weather data from your own weather station to owo network.
+ - 2. set any weather data in owo network as datasource for your fhem installation. Data from this station will be updated periodically.
+ - 3. retrieve weather data from any weather station in owo network once. (same as 2. but without update)
+
+
+ Example:
+
+ define owo openweathermap
+
+
+
+ Configuration of your owo tasks
+
+
+ - 1. providing your own weather data to owo network
+
+
+ define owo openweathermap
+ attr owo owoUser myuser:mypassword
+ attr owo owoStation myStationName
+ attr owo owoInterval 600
+ attr owo owoSrc00 temp:sensorname:temperature
+
+
+
+ - 2. set a weather station from owo network as data source for your fhem installation
+
+
+ set owo stationByName Leimen
+
+ set owo stationById 2879241
+
+ set owo stationByGeo 49.3511 8.6894
+
+
+
+ - All commands will retrieve weather data for Leimen (near Heidelberg,DE)
+ - Readings will be updated periodically, based on value of owoInterval.
+ - If lat and lon value in stationByGeo are omitted, the corresponding values from global attributes are used.
+ - All readings will use prefix "c_"
+
+
+
+
+ - 3. get weather data from a selected weather station once (e.g. to do own presentations)
+
+
+ get owo stationByName Leimen
+
+ get owo stationById 2879241
+
+ get owo stationByGeo 49.3511 8.6894
+
+
+
+ - All commands will retrieve weather data for Leimen (near Heidelberg,DE) once.
+ - Readings will not be updated periodically.
+ - If lat and lon value in stationByGeo are omitted, the corresponding values from global attributes are used.
+ - All readings will use prefix "g_"
+
+
+
+
+
+
+
+ Set-Commands
+
+
+ set <name> clear
+
+ Delete all readings for cleanup
+
+ set <name> send
+
+ start an update cycle manually:
+
+ - send own data
+ - update c_* readings from "set" station (if defined)
+
+ - does not affect or re-trigger running timer cycles!
+ - main purpose: for debugging and testing
+
+
+
+ set <name> <stationById stationId>|<stationByName stationName>|<stationByGeo> [lat lon]>
+
+
+
+
+
+
+ Get-Commands
+
+
+ get <name> <stationById stationId>|<stationByName stationName>|<stationByGeo> [lat lon]>
+
+
+
+ Used exactly as the "set" command, but with two differences:
+
+ - all generated readings use prefix "g_" instead of "c_"
+ - readings will not be updated automatically
+
+
+
+
+ Attributes
+
+ - do_not_notify
+ - readingFnAttributes
+
+ - owoApiKey
+ <yourOpenweathermapApiKey> - find it in your owo account! If set, it will be used in all owo requests.
+ - owoDebug
+ <0|1> this attribute must be defined and set to 0 to start sending own weather data to owo network. Otherwise you can find all data as debug informations in logfile.
+ - owoGetUrl
+ <owoApiUrl> - current URL to owo api. If this url changes, you can correct it here unless updated version of 98_openweather becomes available.
+ - owoInterval
+ <intervalSeconds> - define the interval used for sending own weather data and for updating SET station. Default = 1800sec. If deleted, default will be used.
+ Please do not set interval below 600 seconds! This regulation is defined by openweathermap.org.
+ Values below 600 will be corrected to 600.
+ - owoProxy
+ <proxyAddress> - define a proxy server address, please give full url and port, e.g. http://192.168.111.222:8080
+ - owoStation
+ <yourStationName> - define the station name to be used in "my stats" in owo account
+ - owoUser
+ <user:password> - define your username and password for owo access here
+ - owoRaw
+ <0|1> - defines wether JSON date from owo will be shown in an additional reading (e.g. to use it for own presentations)
+ - owoSendUrl
+ Current URL to post your own data. If this url changes, you can correct it here unless updated version of 98_openweather becomes available.
+ - owoTimestamp
+ <0|1> - defines whether date/time readings show timestamps or localtime-formatted informations
+ - owoSrc00 ... owoSrc19
+ Each of this attributes contains information about weather data to be sent in format owoParam:sensorName:readingName:offset
+ Example: attr owo owoSrc00 temp:outside:temperature will define an attribut owoSrc00, and
+ reading "temperature" from device "outside" will be sent to owo network als paramater "temp" (which indicates current temperature)
+ Parameter "offset" will be added to the read value (e.g. necessary to send dewpoint - use offset 273.15 to send correct value)
+ - owoUseXml
+ <0|1> - defines wether data must be decoded from XML, e.g. JSON not available on Fritzbox
+
+
+ Generated Readings/Events:
+
+ - state - current device state (defined|active)
+ - c_<readingName> - weather data from SET weather station. Readings will be updated periodically
+ - g_<readingName> - weather data from GET command. Readings will NOT be updated periodically
+ - my_lastSent - time of last upload to owo network
+ - my_<readingName> - all readings from own weather station. These readings will be sent to owo network.
+
+
+ Author's notes
+
+ - further informations about sending your own weather data to owo: Link
+ - further informations about owo location search: Link
+ - further informations about owo weather data: Link
+
+
+
+
+ panStamp
+
+ The panStamp is a family of RF devices sold by panstamp.com.
+
+ It is possible to attach more than one device in order to get better
+ reception, fhem will filter out duplicate messages.
+
+ This module provides the IODevice for the SWAP modules that implement the SWAP protocoll
+ to communicate with the individual moths in a panStamp network.
+
+ Note: currently only panSticks are know to work. The panStamp shield for a Rasperry Pi is untested.
+
+
+ Note: this module may require the Device::SerialPort or Win32::SerialPort
+ module if you attach the device via USB and the OS sets strange default
+ parameters for serial devices.
+
+
+
+
+ Define
+
+ define <name> panStamp <device> [<address> [<channel> [<syncword>]]]
+
+ USB-connected devices:
+ <device> specifies the serial port to communicate with the panStamp.
+ The name of the serial-device depends on your distribution, under
+ linux the cdc_acm kernel module is responsible, and usually a
+ /dev/ttyACM0 device will be created. If your distribution does not have a
+ cdc_acm module, you can force usbserial to handle the panStamp by the
+ following command:modprobe usbserial vendor=0x0403
+ product=0x6001 In this case the device is most probably
+ /dev/ttyUSB0.
+
+ You can also specify a baudrate if the device name contains the @
+ character, e.g.: /dev/ttyACM0@38400
+
+ If the baudrate is "directio" (e.g.: /dev/ttyACM0@directio), then the
+ perl module Device::SerialPort is not needed, and fhem opens the device
+ with simple file io. This might work if the operating system uses sane
+ defaults for the serial parameters, e.g. some Linux distributions and
+ OSX.
+
+
+
+ The address is a 2 digit hex number to identify the moth in the panStamp network. The default is 01.
+ The channel is a 2 digit hex number to define the channel. the default is 00.
+ The syncword is a 4 digit hex number to identify the panStamp network. The default is B547.
+
+ Uppon initialization a broadcast message is send to the panStamp network to try to
+ autodetect and autocreate all listening SWAP devices (i.e. all devices not in power down mode).
+
+
+
+
+ Set
+
+ - raw data
+ send raw data to the panStamp to be transmitted over the RF link.
+
+
+
+
+ Get
+
+
+
+ Attributes
+
+
+
+
+
+ pilight
+
+
+ Define
+
+ define <name> pilight <protocol>
+
+
+ Defines a module for setting pilight compartible switches on or off. See Sweetpi.
+ Supported protocols: kaku_switch, elso. If you need more, just contact me!
+ Example:
+
+ define Weihnachtsbaum pilight kaku_switch
+ attr Weihnachtsbaum housecode 12323578
+ attr Weihnachtsbaum unitcode 0
+
+
+ If your pilight server does not run on localhost, please set both the attributes remote_ip and remote_port.
+
+
+
+
+ Attributes
+
+
+
+
+ rain
+
+ Rain calculations. Offers different values from a rain sensor.
+
+
+ Define
+
+ define <name> rain <devicename-regex> [<rain_name> <israining_name> <new_name>]
+
+
+ Calculates rain values for device <devicename-regex> from incremental rain-value and israining-state
+ and write it to some new readings named rain_calc_???????.
+ If optional <rain_name>, <israining_name> and <new_name> is specified
+ then read rain from reading <rain_name>, israining from reading <israining_name>
+ and write the calculated rain to reading <new_name>.
+
+
+ The following values are generated:
+
+ - rain_calc_all --> all values in one line
+ - rain_calc_d_curr --> liter rain at the current day (from 7:30 local time)
+ - rain_calc_d_last --> liter rain of 24h before 7:30 local time
+ - rain_calc_d_start --> first incremental rain value from the rain device after 7:30 local time
+ - rain_calc_h_curr --> liter rain at the current hour (from XX:30)
+ - rain_calc_h_last --> liter rain of 1 hour before the last XX:30 time
+ - rain_calc_h_start --> first incremental rain value from the rain device after last XX:30
+ - rain_calc_now_diff --> fallen rain in liter since last value from rain device
+ - rain_calc_now_rate --> fallen rain in liter/hour since last value from rain device
+
+
+
+
+
+ Example:
+ # Compute the rain for the rain/israining
+ # events of the ks300 device and generate reading rain_calc.
+ define rain_ks300 rain ks300
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+ - disable
+ - DontUseIsRaining 0/1
+
+ Don't use the devicevalue IsRaining, if set to 1
+
+ - DayChangeTime HHMM
+
+ Change the default (day)time of the 'set value to zero' time (use the timecode as four digits!)
+
+ The minutevalue is used to set the (hour)time of the 'set value to zero' time
+
+
+ - CorrectionValue 1
+
+ Use this value if you wish to do a correction of the rain-device-values. It is used as an factor. The value 1 will not change anything.
+
+
+
+
+
+
+
+ readingsGroup
+
+ Displays a collection of readings from on or more devices.
+
+
+
+ Define
+
+ define <name> readingsGroup <device>[:regex] [<device-2>[:regex-2]] ... [<device-n>[:regex-n]]
+
+
+ Notes:
+
+ - <device> can be of the form INTERNAL=VALUE where INTERNAL is the name of an internal value and VALUE is a regex.
+ - <device> can be of the form <STRING> or <{perl}> where STRING or the string returned by perl is
+ inserted as a line in the readings list. skipped if STRING is undef.
+ - If regex is a comma separatet list the reading values will be shown on a single line.
+ - If regex starts with a '+' it will be matched against the internal values of the device instead of the readings.
+ - If regex starts with a '?' it will be matched against the attributes of the device instead of the readings.
+ - regex can be of the form <STRING> or <{perl}[@readings]> where STRING or the string returned by perl is
+ inserted as a reading or:
+
- the item will be skipped if STRING is undef
+ - if STRING is br a new line will be started
+ - if STRING is of the form %ICON[%CMD] ICON will be used as the name of an icon instead of a text and CMD
+ as the command to be executed if the icon is clicked. also see the commands attribute.
+ if readings is given the perl expression will be reevaluated during longpoll updates.
+ - For internal values and attributes longpoll update is not possible. Refresh the page to update the values.
+ - the <{perl}> expression is limited to expressions without a space. it is best just to call a small sub
+ in 99_myUtils.pm instead of having a compex expression in the define.
+
+
+ Examples:
+
+
+ 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ü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 °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
+
+
+
+ Get
+
+
+
+ Attributes
+
+ - alwaysTrigger
+ 1 -> alwaysTrigger update events. even if not visible.
+ - disable
+ 1 -> disable notify processing and longpoll updates. Notice: this also disables rename and delete handling.
+ 2 -> also disable html table creation
+ 3 -> also disable html creation completely
+ - sortDevices
+ 1 -> sort the device lines alphabetically. use the first of sortby or alias or name that is defined for each device.
+ - noheading
+ If set to 1 the readings table will have no heading.
+ - nolinks
+ Disables the html links from the heading and the reading names.
+ - nostate
+ If set to 1 the state reading is excluded.
+ - notime
+ If set to 1 the reading timestamp is not displayed.
+ - mapping
+ Can be a simple string or a perl expression enclosed in {} that returns a hash that maps reading names
+ to the displayed name. The keys can be either the name of the reading or <device>.<reading>.
+ %DEVICE, %ALIAS, %ROOM, %GROUP and %READING are replaced by the device name, device alias, room attribute,
+ group attribute and reading name respectively. You can also prefix these keywords with $ instead of %. Examples:
+ attr temperatures mapping $DEVICE-$READING
+ attr temperatures mapping {temperature => "%DEVICE Temperatur"}
+
+ - separator
+ The separator to use between the device alias and the reading name if no mapping is given. Defaults to ':'
+ a space can be enteread as
+ - style
+ Specify an HTML style for the readings table, e.g.:
+ attr temperatures style style="font-size:20px"
+ - nameStyle
+ Specify an HTML style for the reading names, e.g.:
+ attr temperatures nameStyle style="font-weight:bold"
+ - valueStyle
+ Specify an HTML style for the reading values, e.g.:
+ attr temperatures valueStyle style="text-align:right"
+ - valueColumns
+ Specify an HTML colspan for the reading values, e.g.:
+ attr wzReceiverRG valueColumns { eventdescription => 'colspan="4"' }
+ - valueFormat
+ Specify an sprintf style format string used to display the reading values. If the format string is undef
+ this reading will be skipped. Can be given as a string, a perl expression returning a hash or a perl
+ expression returning a string, e.g.:
+ attr temperatures valueFormat %.1f °C
+ attr temperatures valueFormat { temperature => "%.1f °C", humidity => "%.1f %" }
+ attr temperatures valueFormat { ($READING eq 'temperature')?"%.1f °C":undef }
+ - nameIcon
+ Specify the icon to be used instead of the reading name. Can be a simple string or a perl expression enclosed
+ in {} that returns a hash that maps reading names to the icon name. e.g.:
+ attr devices nameIcon $DEVICE
+ - valueIcon
+ Specify an icon to be used instead of the reading value. Can be a simple string or a perl expression enclosed
+ in {} that returns a hash that maps reading value to the icon name. e.g.:
+ 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
+ Can be used in to different ways:
+
+ - To make a reading or icon clickable by directly specifying the command that should be executed. eg.:
+ attr rgMediaPlayer commands { "playStatus.paused" => "set %DEVICE play", "playStatus.playing" => "set %DEVICE pause" }
+ - Or if the mapped command is of the form <command>:[<modifier>] then the normal FHEMWEB
+ webCmd widget for <modifier> will be used for this command. if <modifier> is omitted then the FHEMWEB lookup mechanism for <command> will be used. eg:
+ attr rgMediaPlayer commands { volume => "volume:slider,0,1,100" }
+ attr lights commands { pct => "pct:", dim => "dim:" }
+
+
+
+
+ The nameStyle and valueStyle attributes can also contain a perl expression enclosed in {} that returns the style
+ string to use. The perl code can use $DEVICE,$READING and $VALUE, e.g.:
+
+ attr batteries valueStyle {($VALUE ne "ok")?'style="color:red"':'style="color:green"'}
+ attr temperatures valueStyle {($DEVICE =~ m/aussen/)?'style="color:green"':'style="color:red"'}
+
+ Note: Only valueStyle, valueFomat, valueIcon and <{...}@reading> are evaluated during longpoll updates
+ and valueStyle has to return a non empty style for every possible value. All other perl expressions are
+ evaluated only once during html creation and will not reflect value updates with longpoll.
+ Refresh the page to update the dynamic style. For nameStyle the color attribut is not working at the moment,
+ the font-... and background attributes do work.
+
+
+
+ readingsProxy
+
+ Makes (a subset of) a reading from one device available as a new device.
+ This can be used to map channels from 1-Wire, EnOcean or SWAP devices to independend devices that
+ can have state,icons and webCmd different from the parent device and can be used in a floorplan.
+
+
+ Define
+
+ define <name> readingsProxy <device>:<reading>
+
+
+ Examples:
+
+ define myProxy readingsProxy myDS2406:latch.A
+
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+ - disable
+ 1 -> disable notify processing. Notice: this also disables rename and delete handling.
+ - getList
+ Space separated list of commands, which will be returned upon "get name ?",
+ so the FHEMWEB frontend can construct a dropdown.
+ %PARENT% will result in the complete list of commands from the parent device.
+ get commands not in this list will be rejected.
+ - setList
+ Space separated list of commands, which will be returned upon "set name ?",
+ so the FHEMWEB frontend can construct a dropdown and offer on/off switches.
+ %PARENT% will result in the complete list of commands from the parent device.
+ set commands not in this list will be rejected.
+ Example: attr proxyName setList on off
+ - readingFnAttributes
+ - getFn
+ perl expresion that will return the get command forwarded to the parent device.
+ has access to $DEVICE, $READING, $CMD and $ARGS.
+ undef -> do nothing
+ "" -> pass-through
+ (,1) -> directly return , don't call parent getFn
+ everything else -> use this instead
+ - setFn
+ perl expresion that will return the set command forwarded to the parent device.
+ has access to $DEVICE, $READING, $CMD and $ARGS.
+ undef -> do nothing
+ "" -> pass-through
+ everything else -> use this instead
+ Examples:
+ attr myProxy setFn {($CMD eq "on")?"off":"on"}
+
+ - valueFn
+ perl expresion that will return the value that sould be used as state.
+ has access to $DEVICE, $READING, $CMD and $VALUE.
+ undef -> do nothing
+ "" -> pass-through
+ everything else -> use this instead
+ Examples:
+ attr myProxy valueFn {($VALUE == 0)?"off":"on"}
+
+
+
+
+
+ remotecontrol
+
+ Displays a graphical remote control. Buttons (=icons) can be chosen and arranged. Predefined layouts are available for e.g. Samsung-TV or iTunes.
+ Any buttonclick can be forwarded to the actual fhem-device. For further explanation, please check the Wiki-Entry<>.
+
+
+ Define
+
+ define <rc-name> remotecontrol
+ Typical steps to implement a remotecontrol:
+
+ define rc1 remotecontrol | # defines a "blank" remotecontrol |
+ get rc1 layout | # displays all available predefined layouts |
+ set rc1 layout samsung | # assigns keys for a SamsungTV |
+ set rc1 makenotify myTV | # creates notify_rc1 which forwards every buttonclick to myTV for execution |
+ Note: keys can be changed at any time, it is not necessary to redefine the weblink |
+ attr rc1 row15 VOLUP,VOLDOWN |
+
+
+
+
+ Set
+
+ set <rc-name> layout [delete|<layoutname>]
+ layout delete deletes all rowXX-attributes
+ layout <layoutname> assigns a predefined layout to rowXX-attributes
+ set <rc-name> makeweblink [<name>]
+ creates a weblink to display the graphical remotecontrol. Default-name is weblink_<rc-name> .
+ set <rc-name> makenotify <executingDevice>
+ creates a notify to trigger <executingDevice> every time a button has been pressed. name is notify_<rc-name> .
+
+
+
+ Get
+
+ get <rc-name> [htmlcode|layout]
+ htmlcode displays htmlcode for the remotecontrol on fhem-page
+ layout shows which predefined layouts ae available
+
+
+
+ Attributes
+
+ - loglevel
+ - rc_iconpath
+ path for icons, default is "icons" . The attribute-value will be used for all icon-files except .svg .
+ - rc_iconprefix
+ prefix for icon-files, default is "" . The attribute-value will be used for all icon-files except .svg .
+ - Note: Icon-names (button-image-file-names) will be composed as
fhem/<rc_iconpath>/<rc_iconprefix><command|image>
+ For .svg -icons, the access sequence is according to the FHEMWEB-attribute iconPath, default is openautomation:fhemSVG:default .
+ - rc_devStateIcon
+ In FHEMWEB-room-overview, displays the button-layout on the rc-device itself. Default is 1, set to 0 is the remotecontrol-device should not display its buttons in FHEMWEB roomview.
+
+ - rowXX
+ attr <rc-name> rowXX <command>[:<image>][,<command>[:<image>]][,...]
+ Comma-separated list of buttons/images per row. Any number of buttons can be placed in one row. For each button, use
+
+ <command> is the command that will trigger the event after a buttonclick. Case sensitive.
+ <image> is the filename of the image
+ - Per button for the remotecontrol, use
+ <command> where an icon with the name <command> is displayed
+ Example:
+ attr rc1 rc_iconprefix black_btn_ # used for ALL icons on remotecontrol rc1
+ attr rc1 row00 VOLUP
+ icon is black_btn_VOLUP , a buttonclick creates the event VOLUP
+
+ or
+ <command>:<image> where an icon with the name <rc_iconprefix><image> is displayed
+ Example:
+ row00=LOUDER:VOLUP
+ icon is black_btn_VOLUP , a buttonclick creates the event LOUDER
+
+ Examples:
+ attr rc1 row00 1,2,3,TV,HDMI
+ attr rc2 row00 play:PLAY,pause:PAUSE,louder:VOLUP,quieter:VOLDOWN
+
+ - Hint: use :blank for a blank space, use e.g. :blank,:blank,:blank for a blank row
+
+
+
+
+
+ sequence
+
+
+
+
+ Define
+
+ define <name> sequence <re1> <timeout1> <re2> [<timeout2> <re3> ...]
+
+
+ A sequence is used to allow to trigger events for a certain combination of
+ button presses on a remote. E.g. to switch on a lamp when pressing the
+ Btn1:on, then Btn2:off and at last Btn1:on one after the other you could
+ define the following:
+
+
+
+ define lampseq sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on
+ define lampon notify lampseq:trigger set lamp on
+
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+
+ speedtest
+
+ Provides internet speed data via speedtest-cli.
+
+ Notes:
+
+ - speedtest-cli hast to be installed on the FHEM host.
+
+
+
+ Define
+
+ define <name> speedtest [<interval> [<server>]]
+
+
+ Defines a speedtest device.
+
+ The data is updated every <interval> seconds. The default is 3600 and the minimum is 1800.
+
+ <server> gives the speedtest sever id. the list of all servers is available with speedtest-cli --list .
+
+ Examples:
+
+ define speedtest speedtest
+ define speedtest speedtest 3600 2760
+
+
+
+
+ Readings
+
+ - ping
+ - download
+ - upload
+
+
+
+ Set
+
+ - statusRequest
+ manualy start a test. this works even if the device is set to disable.
+
+
+
+ Attributes
+
+ - path
+ The path to the speedtest binary.
+ - checks-till-disable
+ how often the speedtest should be run before it is automaticaly set to disabled. the value will be decreased by 1 for every run.
+ - disable
+ set to 1 to disable the test.
+
+
+
+
+ structure
+
+
+
+ Define
+
+ define <name> structure <struct_type> <dev1> <dev2> ...
+
+ The structure device is used to organize/structure devices in order to
+ set groups of them at once (e.g. switching everything off in a house).
+
+ The list of attached devices can be modified through the addstruct /
+ delstruct commands. Each attached device will get the attribute
+ <struct_type>=<name> when it is added to the list, and the
+ attribute will be deleted if the device is deleted from the structure.
+
+ The structure devices can also be added to a structure, e.g. you can have
+ a building consisting of levels which consists of rooms of devices.
+
+
+ Example:
+
+ - define kitchen structure room lamp1 lamp2
+ - addstruct kitchen TYPE=FS20
+ - delstruct kitchen lamp1
+ - define house structure building kitchen living
+ - set house off
+
+
+
+
+
+
+ Set
+
+ Every set command is propagated to the attached devices. Exception: if an
+ attached device has an attribute structexclude, and the attribute value
+ matches (as a regexp) the name of the current structure.
+ If the set is of the form set <structure> [FILTER=<filter>] <type-specific>
+ then :FILTER=<filter> will be appended to the device name in the propagated set for
+ the attached devices like this: set :FILTER=<filter> <type-specific>
+
+
+
+
+ Get
+
+ get is not supported through a structure device.
+
+
+
+
+ Attributes
+
+
+ - clientstate_behavior
+ The backward propagated status change from the devices to this structure
+ works in two different ways.
+
+ - absolute
+ The structure status will changed to the common device status of all
+ defined devices to this structure if all devices are identical.
+ Otherwise the structure status is "undefined".
+
+ - relative
+ See below for clientstate_priority.
+
+ - relativeKnown
+ Like relative, but do not trigger on events not described in
+ clientstate_priority. Needed e.g. for HomeMatic devices.
+
+ - last
+ The structure state corresponds to the state of the device last changed.
+
+
+
+
+
+ - clientstate_priority
+ If clientstate_behavior is set to relative, then you have to set the
+ attribute "clientstate_priority" with all states of the defined devices
+ to this structure in descending order. Each group is delemited by
+ space or /. Each entry of one group is delimited by "pipe". The status
+ represented by the structure is the first entry of each group.
+ Example:
+
+ - attr kitchen clientstate_behavior relative
+ - attr kitchen clientstate_priority An|On|on Aus|Off|off
+ - attr house clientstate_priority Any_On|An All_Off|Aus
+
+ In this example the status of kitchen is either on or off. The status
+ of house is either Any_on or All_off.
+
+ - <struct_type>_map
+ With this attribute, which has to specified for the structure-
+ member, you can redefine the value reported by a specific
+ structure-member for the structure value. The attribute has three
+ variants:
+
+ - readingName
+ take the value from readingName instead of state.
+
+ - oldVal:newVal
+ if the state reading matches oldVal, then replace it with newVal
+
+ - readingName:oldVal:newVal
+ if readingName matches oldVal, then replace it with newVal
+
+
+ Example:
+
+ - define door OWSWITCH <ROMID>
+ - define lamp1 dummy
+ - attr lamp1 cmdlist on off
+ - define kitchen structure struct_kitchen lamp1 door
+ - attr kitchen clientstate_priority An|on OK|Aus|off
+ - attr lamp1 struct_kitchen_map on:An off:Aus
+ - attr door struct_kitchen_map A:open:on A:closed:off
+ - attr door2 struct_kitchen_map A
+
+
+
+
+ - structexclude
+ exclude the device from set/notify or attribute operations. For the set
+ and notify the value of structexclude must match the structure name,
+ for the attr/deleteattr commands ist must match the combination of
+ structure_name:attribute_name. Examples:
+
+
+ define kitchen structure room lamp1 lamp2
+ attr lamp1 structexclude kitchen
+ attr lamp1 structexclude kitchen:stateFormat
+
+
+
+
+ - readingFnAttributes
+
+
+
+
+
+
+ telnet
+
+
+
+ Define
+
+ define <name> telnet <portNumber> [global]
+ or
+ define <name> telnet <servername>:<portNumber>
+
+
+ First form, server mode:
+ Listen on the TCP/IP port <portNumber> for incoming
+ connections. If the second parameter global is not specified,
+ the server will only listen to localhost connections.
+
+ To use IPV6, specify the portNumber as IPV6:<number>, in this
+ case the perl module IO::Socket:INET6 will be requested.
+ On Linux you may have to install it with cpan -i IO::Socket::INET6 or
+ apt-get libio-socket-inet6-perl; OSX and the FritzBox-7390 perl already has
+ this module.
+ Examples:
+
+ define tPort telnet 7072 global
+ attr tPort globalpassword mySecret
+ attr tPort SSL
+
+ Note: The old global attribute port is automatically converted to a
+ telnet instance with the name telnetPort. The global allowfrom attibute is
+ lost in this conversion.
+
+
+ Second form, client mode:
+ Connect to the specified server port, and execute commands received from
+ there just like in server mode. This can be used to connect to a fhem
+ instance sitting behind a firewall, when installing exceptions in the
+ firewall is not desired or possible. Note: this client mode supprts SSL,
+ but not IPV6.
+ Example:
+
+ Start tcptee first on publicly reachable host outside the firewall.
+ perl contrib/tcptee.pl --bidi 3000
+ Configure fhem inside the firewall:
+ define tClient telnet <tcptee_host>:3000
+ Connect to the fhem from outside of the firewall:
+ telnet <tcptee_host> 3000
+
+
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes:
+
+
+ - password
+ Specify a password, which has to be entered as the very first string
+ after the connection is established. If the argument is enclosed in {},
+ then it will be evaluated, and the $password variable will be set to
+ the password entered. If the return value is true, then the password
+ will be accepted. If thies parameter is specified, fhem sends telnet
+ IAC requests to supress echo while entering the password.
+ Also all returned lines are terminated with \r\n.
+ Example:
+
+
+ attr tPort password secret
+ attr tPort password {"$password" eq "secret"}
+
+
+ Note: if this attribute is set, you have to specify a password as the
+ first argument when using fhem.pl in client mode:
+
+ perl fhem.pl localhost:7072 secret "set lamp on"
+
+
+
+
+ - globalpassword
+ Just like the attribute password, but a password will only required for
+ non-local connections.
+
+
+
+ - SSL
+ Enable SSL encryption of the connection, see the description here on generating the needed SSL certificates. To
+ connect to such a port use one of the following commands:
+
+ socat openssl:fhemhost:fhemport,verify=0 readline
+ ncat --ssl fhemhost fhemport
+ openssl s_client -connect fhemhost:fhemport
+
+
+
+
+ - allowfrom
+ Regexp of allowed ip-addresses or hostnames. If set,
+ only connections from these addresses are allowed.
+
+
+
+ - connectTimeout
+ Wait at maximum this many seconds for the connection to be established.
+ Default is 2.
+
+
+
+ - connectInterval
+ After closing a connection, or if a connection cannot be estblished,
+ try to connect again after this many seconds. Default is 60.
+
+
+
+ - encoding
+ Sets the encoding for the data send to the client. Possible values are latin1 and utf8. Default is utf8.
+
+
+
+
+
+
+
+
+ update
+
+ FHEM update / check for updates:
+
+ update [development|stable] [<file|package>] [force]
+ update [development|stable] check
+ update housekeeping
+ Third party package update / check for a package update:
+
+ update thirdparty <url> <package> [force]
+ update thirdparty <url> <package> check
+
+ The installed fhem distribution and its installed extensions (just like the
+ webGUI PGM2) are updated via this command from the online repository. The
+ locally installed files will be checked against the online repository and
+ will be updated in case the files online are in a newer version.
+
+
+ The update function will process more advanced distribution information
+ as well as control commands for updating, removing or renaming existing files.
+ New file structures can also be set up via control command files.
+ The update process will exclusively work with the file path which is
+ given by the global attribute "modpath" except for the fhem.pl file. The user
+ decides whether to use a stable, or a developer-rated version of fhem.
+ stable is not yet implemented, so an update use always the developer-rated version.
+
+
+ Furthermore, the use of packages is supported just like in a manual installation
+ of fhem. On the moment this only refers to FHEM including PGM2 (FHEMWEB), others
+ may follow up. By using the update in this way, only files which are acutally
+ used will be updated.
+
+
+ The update function supports the installation of third-party packages like
+ modules or GUIs that are not part of the FHEM distribution.
+
+
+ Notice for Developers of third-party packages:
+
+ Further information can be obtained from the file 'docs/LIESMICH.update-thirdparty'.
+
+
+ Examples:
+ Check for new updates:
+ fhem> update check
+
+
+ FHEM update:
+ fhem> update
+
+
+ Force FHEM update (all files are updated!):
+ fhem> update force
+
+
+ Update a single file:
+ fhem> update 98_foobar.pm
+
+
+ Search for a filename:
+ fhem> update backup
+ 'backup' not found. Did you mean:
+ ==> 98_backup.pm
+ nothing to do...
+
+
+ Update / install a third-party package:
+ fhem> update thirdparty http://domain.tld/path packagename
+
+
+ Check a third-party package for new updates:
+ fhem> update thirdparty http://domain.tld/path packagename check
+
+
+
+ Attributes
+
+
+
+
+ watchdog
+
+
+
+
+ Define
+
+ define <name> watchdog <regexp1> <timespec> <regexp2> <command>
+
+ Start an arbitrary fhem.pl command if after <timespec> receiving an
+ event matching <regexp1> no event matching <regexp2> is
+ received.
+ The syntax for <regexp1> and <regexp2> is the same as the
+ regexp for notify.
+ <timespec> is HH:MM[:SS]
+ <command> is a usual fhem command like used int the at or notify
+
+
+ Examples:
+
+ # Request data from the FHT80 _once_ if we do not receive any message for
+ # 15 Minutes.
+ define w watchdog FHT80 00:15:00 SAME set FHT80 date
+
+ # Request data from the FHT80 _each_ time we do not receive any message for
+ # 15 Minutes, i.e. reactivate the watchdog after it triggered. Might be
+ # dangerous, as it can trigger in a loop.
+ define w watchdog FHT80 00:15:00 SAME set FHT80 date;; trigger w .
+
+ # Shout once if the HMS100-FIT is not alive
+ define w watchdog HMS100-FIT 01:00:00 SAME "alarm-fit.sh"
+
+ # Send mail if the window is left open
+ define w watchdog contact1:open 00:15 contact1:closed "mail_me close window1"
+ attr w regexp1WontReactivate
+
+
+ Notes:
+
+ - if <regexp1> is . (dot), then activate the watchdog at
+ definition time. Else it will be activated when the first matching
+ event is received.
+ - <regexp1> resets the timer of a running watchdog, to avoid it
+ use the regexp1WontReactivate attribute.
+ - if <regexp2> is SAME, then it will be the same as the first
+ regexp, and it will be reactivated, when it is received.
+
+ - trigger <watchdogname> . will activate the trigger if its state
+ is defined, and set it into state defined if its state is
+ triggered. You always have to reactivate the watchdog with this
+ command once it has triggered (unless you restart fhem)
+ - a generic watchdog (one watchdog responsible for more devices) is
+ currently not possible.
+
+
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+
+
+
+ weblink
+
+
+ Define
+
+ define <name> weblink [link|image|iframe|htmlCode|cmdList]
+ <argument>
+
+ This is a placeholder device used with FHEMWEB to be able to add user
+ defined links.
+ Examples:
+
+ define homepage weblink link http://www.fhem.de
+ define webcam_picture weblink image http://w.x.y.z/current.jpg
+ define interactive_webcam weblink iframe http://w.x.y.z/webcam.cgi
+ define hr weblink htmlCode <hr>
+ define w_Frlink weblink htmlCode { WeatherAsHtml("w_Frankfurt") }
+ define systemCommands weblink cmdList pair:Pair:set+cul2+hmPairForSec+60 restart:Restart:shutdown+restart update:UpdateCheck:update+check
+
+
+
+ Notes:
+
+ - For cmdList <argument> consist of a list of space separated icon:label:cmd triples.
+ - The readings type is deprecated. Use readingGroup instead.
+
+
+
+
+ Set
+
+
+ Get
+
+
+ Attributes
+
+
+ - htmlattr
+ HTML attributes to be used for link, image and iframe type of links.
+ E.g.:
+
+
+ define yw weblink wl_im1 iframe http://weather.yahooapis.com/forecastrss?w=650272&u=c
+ attr yw weblink htmlattr width="480" height="560"
+
+
+
+
+
+
+
+
+ withings
+
+ xxx
+
+ Notes:
+
+ - JSON, LWP::Simple and Digest::MD5 have to be installed on the FHEM host.
+
+
+
+ Define
+
+ define <name> withings <device>
+ define <name> withings <userid> <publickey>
+ define <name> withings [ACCOUNT] <login> <password>
+
+
+ Defines a withings device.
+ If a withings device of the account type is created all fhem devices for users and devices are automaticaly created.
+
+
+ Examples:
+
+ define withings withings abc@test.com myPassword
+ define withings withings 642123 2a42f132b9312311
+
+
+
+
+ Readings
+
+ - weight
+ - height
+ - fatFreeMass
+ - fatRatio
+ - fatMass
+ - diastolicBloodPressure
+ - systolicBloodPressure
+ - heartPulse
+
+ - co2
+ - battery
+ - batteryLevel
+
+
+
+ Get
+
+ - update
+ trigger an update
+
+
+
+ Attributes
+
+ - interval
+ the interval in seconds used to check for new values.
+ - disable
+ 1 -> stop polling
+
+
+
+
+ xxLG7000
+
+
+
+
+ Define
+
+ define <name> xxLG7000 <serial-device>
+
+
+ Defines a serial link to a TV set of LG's xxLG70yy (e. g. 47LG7000) series
+ and similar TV sets from LG. As of January 2010, the following TV sets should
+ be compatible:
+
+ xxLG7000 , e. g. 47LG7000 (tested)
+ xxPG7000 , e. g. 50PG7000 (same Manual as 47LG7000 ;))
+ PS3000/6000/7000/8000 series (according to LG brochure; no liabilities assumed)
+ PQ3000/6000 series (see PS3000)
+ LU4000/5000 series (not LU7000; see PS3000)
+ LH2000/3000/4000/5000 series (see PS3000)
+ SL9500/9000/8000 series (see PS3000)
+
+ These TV sets feature a serial connector which can officially be used to control
+ the TV set (see your Onwer's Manual, there's an Appendix labelled "External Control
+ Device setup", referening to cabling and command set). The xxLG7000 module is
+ the FHEM module to actually utilize this. (BTW, those TVs run Linux internally ;))
+ To exercise control over your TV set, use the LGTV module and
+ bind it ("attr <LGTV-name> IODev <xxLG7000-name>") to xxLG7000.
+
+ Examples:
+
+ define myLG7k xxLG7000 /dev/ttyUSB1
+
+
+
+
+
+ Set
+ Not used, nothing to set directly.
+
+
+ Get
+ Not used, nothing to get directly.
+
+
+ Attributes
+
+ - loglevel
+ - SetID (1, 2, ...; see your TV's Owner's Manual how to set it. Defaults to 1 if unset.)
+
+
+
+
+
+
+ Perl specials
+ If you want to automate some tasks via fhem, then you'll probably use at or notify. For more complex tasks
+ you'll use either a shell-script or a perl "oneliner" as the at/notify
+ argument. This chapter gives some tips in using the perl oneliners.
+
+ - To test perl oneliners, type them on the telnet prompt (or FHEMWEB text
+ input) by enclosing it in {}, one line at once. The last line will only
+ write something in the logfile, the output of the other lines is directly
+ visible.
+
+ { "Hello" }
+ { 1+3*4 }
+ { `ls /etc` }
+ { Log 1, "Hello" }
+
+
+
+ -
+ Perl expressions are separated by ;, in fhem oneliners they have to
+ escaped with ;;
+
+ { my $a = 1+1;; Log 1, "Hello $a" }
+
+
+
+ - To use fhem commands from the perl expression, use the function fhem(),
+ which takes a string argument, this string will be evaluated as a fhem
+ command:
+
+ { fhem "set light on" }
+ define n1 notify piri:on { fhem "set light on" }
+
+ Note: if this function returns a value, it will also be logged into the
+ global fhem log. Use 1 as a second argument to disable this logging, this
+ makes sense when obtainig some values via fhem "get...".
+
+
+
+ - Notify can be used to store macros for manual execution. Use the trigger command to execute the macro:
+
+ define MyMacro notify MyMacro { Log 1, "Hello"}
+ trigger MyMacro
+ define MacroWithArg notify MyMacro { Log 1, "Hello %"}
+ trigger MyMacro MyArg
+
+
+
+
+ - To make date and time handling easier, the variables $sec, $min, $hour,
+ $mday, $month, $year, $wday, $yday, $isdst are available in the perl
+ oneliners (see also perldoc -f localtime). Exceptions: $month is in the
+ range of 1 to 12, and $year is corrected by 1900 (as I would expect).
+ Additionally the variable $hms contains the time in the HH:MM:SS format.
+
+ Additionally the variabe $we is 1 if it is weekend (i.e $wday == 0 or
+ $wday == 6), and 0 otherwise. If the holida2we
+ global attribute is set, $we is 1 for holidays too.
+
+ 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) }
+
+
+
+
+ -
+ The following helper functions are defined in 99_Util.pm (which will
+ be loaded automatically, as every module with prefix 99):
+
+ - min(a,b), max(a,b)
+ - time_str2num("YYYY-MM-DD HH:MM:SS") returns a numerical value,
+ which makes computation of time differences easier
+ - abstime2rel("HH:MM:SS") converts an absolute time to a relative one
+
+
+
+
+ -
+ To access the device states/attributes, use the following functions:
+
+
+ - Value(<devicename>)
+ returns the state of the device (the string you see in paranthesis in
+ the output of the list command).
+
+ - OldValue(<devicename>)
+
- OldTimestamp(<devicename>)
+ returns the old value/timestamp of the device.
+
+ -
+ ReadingsVal(<devicename>,<reading>,<defaultvalue>)
+ Return the reading (the value in the Readings section of "list device")
+
+ -
+ AttrVal(<devicename>,<attribute>,<defaultvalue>)
+ Return the attribute of the device
+
+ { Value("wz") }
+ { OldValue("wz") }
+ { time_str2num(OldTimestamp("wz")) }
+ { ReadingsVal("wz", "measured-temp", "20")+0 }
+ { ReadingsTimestamp("wz", "measured-temp", 0)}
+ { AttrVal("wz", "room", "none") }
+
+ -
+ InternalVal(<devicename>,<property>,<defaultvalue>)
+
+ Return the internal value (the value in the Internals section of "list
+ device").
+
+
+
+
+ -
+ By using the 99_SUNRISE_EL.pm module, you have access to the following
+ functions:
+
+ sunset($offset, $min, $max)
+ sunrise($offset, $min, $max)
+ isday()
+
+ offset is in seconds, and the format of min/max is "HH:MM" or "HH:MM:SS".
+ isday returns 1 if the sun is visible, and 0 else.
+
+
+
+
+
+
+ gnuplot file syntax
+
+The .gplot files are also used by the FHEMWEB/SVG module
+when the plotmode attribute is set to SVG. In this case
+only a subset of the .gnuplot attributes are used, and some lines have special
+meanings: the difference will be explained in this chapter. See also this fhemwiki entry on
+creating logs.
+Following is a minimal .gplot definition (valid only for plotmode SVG):
+
+ set terminal size <SIZE>
+ #FileLog 4:::
+ plot title 'Temperature' with lines
+
+The .gnuplot file consists of 3 parts:
+
+ - set commands
+ Following sets are recognized:
+
+ - terminal, only the size parameter.
+ This is usually set to <SIZE>, which is replaced by the plotsize attribute of the FHEMWEB or weblink
+ instance.
+
+ - title
+ Usually set to <TL> which is replace by the weblink title attribute, or to <Lx>, which is replaced
+ by the weblink label attribute.
+
+ - ylabel,y2label
+ Left and right labels, printed vertically. Are also subject to label
+ replacement.
+
+ - yrange,y2range
+ Specify the range of the left and right axis. Examples:
+
+ set yrange [-0.1:1.1]
+ set y2range [0:]
+
+
+ - ytics,y2tics
+ the label for the left/right axis tics. Examples:
+
+ set ytics ("on" 0, "off" 1)
+ set y2tics
+
+
+
+
+
+
+ - #FileLog entries
+ Each line from the plot section must have one corresponding #FileLog
+ line. For the syntax see the column_spec paragraph of the Filelog get description.
+ Note that for SVG plots the first column of the input file always has to
+ be in the standard fhem timestamp format (YYYY-MM-DD_HH:MM:SS)
+
+
+
+ - plot entries
+ There is always one plot command with comma separated argument-blocks.
+ Each argument-block represents one line, and has its own parameters.
+ Following parameters are recognized:
+
+ - axes x1y1 / x1y2
+ tells the program to assign the current line to one of the two axes
+ (left or right).
+
+ - title
+ Caption of the line. Whan clicking on this title, a small javascript
+ program will change the title to the min/max and last values of the plot,
+ will enable copying this line or pasting an already copied one (the
+ existing scale of the plot wont'be changed, only the pasted line will
+ be scaled), and other lines of the plot will temporarily be hidden.
+
+ - with <linetype>
+ Specify the line type. Following types are recognized: points,
+ steps, fsteps, histeps and lines. Everything unknown will be mapped to
+ the type lines.
+
+ - ls <linestyle>
+ The linestyle defaults to l0 for the first line, l1 for the second, and
+ so on. It is defined in the svg_style.css file. There are two sets
+ defined here: l0-l8 and l0fill-l6fill. The second set must be specified
+ explicitly. If the name of the linestyle contains the word fill, then
+ plots of the lineytype "lines" will have an additional starting and
+ ending segment, so that filling is done correctly.
+ See the SVG spec for details of this CSS file.
+ Note: if you plan to use this attribute, you have to specify it for all
+ the lines (attribute-blocks) in the plot command.
+
+ - lw <linewidth>
+ Sets the stroke-width style of the line. This attribute is deprecated,
+ the corresponding feature of the CSS file / (attribute ls) should be
+ used instead.
+
+
+
+
+
+
+
+
| | | | | | | |