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