2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 06:39:11 +00:00
fhem-mirror/fhem/docs/HOWTO.html

371 lines
15 KiB
HTML
Raw Normal View History

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>FHEM Howto</title>
<style type="text/css">
body { background-color: #FFFFE7;}
#left { position:absolute; top:20px; left:20px; width:140px; }
#right { position:absolute; top:20px; left:180px; bottom:20px; right:10px; }
body>div#left { position:fixed; }
h3 { color:#52865D; line-height:1.3;
margin-top:1.5em; font-family:Arial,Sans-serif; }
div#block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
div#dist { padding-top:0.3em; }
a { color: #278727; }
</style>
</head>
<body>
<div id="left">
<img src="fhem.png">
<h3>FHEM Howto</h3>
</div>
<div id="right">
<!--
<a href="#starting">Starting</a><br>
<a href="#FHZ">Attaching an FHZ/CUL</a><br>
<a href="#FS20rx">Configuring FS20 receivers</a><br>
<a href="#FS20tx">Configuring FS20 transmitters</a><br>
<a href="#FHT">Configuring FHT devices</a><br>
<a href="#at">Timed commands / Notify</a><br>
<a href="#rooms">FHEMWEB look and feel</a><br>
<a href="#log">Logging data</a><br>
<a href="#plot">Plotting logs</a><br>
<a href="#tips">FHEMWEB tips</a><br>
<a href="#structure">Complex structures</a><br>
-->
<a name="starting"></a>
<h3>Starting fhem</h3>
<ul>
Skip this section if you installed fhem via the Debian package.<br><br>
First install the Device::SerialPort (or Win32::SerialPort) perl module
with the command <code>"sudo cpan Device::SerialPort"</code></br>
The default configuration will install fhem into /usr/bin,
/usr/share/fhem and /var/log/fhem. Edit the Makefile to change
this.
To install & start fhem type:<pre>
make install-pgm2
perl /usr/local/bin/fhem.pl /var/log/fhem/fhem.cfg</pre>
After starting, the logfile should look like:<pre>
2008.06.15 16:17:03 2: FHEMWEB port 8083 opened
2008.06.15 16:17:03 2: FHEMWEB port 8084 opened
2008.06.15 16:17:03 0: Server started (version ...)
</pre>
Connect to fhem with an internet browser:
<a href="http://localhost:8083/fhem">http://localhost:8083/fhem</a><br>
or
<a href="http://localhost:8084/fhem">http://localhost:8084/fhem</a> if
you are using a small-screen browser (e.g a smartphone).
</ul>
<a name="FHZ"></a>
<h3>Attaching the USB device for the PC (CUL / FHZ / EM1010PC)</h3>
<ul>
Attach the USB device (CUL, FHZ1000/FHZ1300, EM1010PC) to your computer,
and look for the corresponding device in the /dev directory.<br>
For CUL a file named /dev/ttyACM* will be created under Linux and
/dev/cu.usbmodem* under OSX. Note the exact name of the device.
Define it for fhem (by typing it in the "Fhem cmd" input field in the
browser):<pre>
define CUL1 CUL /dev/ttyACM0 1234</pre>
You can find details about CUL define parameters <a
href="commandref.html#CUL">here</a>.<br><br>
Instead of the CUL you can also use an <a
href="commandref.html#FHZ">FHZ</a> with slightly different parameters
(define FHZ1 FHZ /dev/ttyUSB0).
<br><br>
<b>Note:</b> Don't forget to type "save" in the "Fhem cmd" input field of
the browser after defining a device or setting its attribute. Otherwise
the changes will disappear after the next start.</br><br> </ul>
<a name="autocreate"></a>
<h3>Automatically creating transmitters</h3>
<ul>
The sample configuration file installed via "make install-pgm2" has
configured an <a href="commandref.html#autocreate">autocreate</a>
instance. This will automatically create fhem devices upon reception
of a message from this device (typically a sensor like S300 or FHT).
Just wait for a while, watch the log and re-check your browser for newly
appeared devices. You can use <a href="commandref.html#rename">
rename</a> to rename the automatically created device, e.g. type in the
input field of the web frontend:<pre>
rename FHT_1234 fht.kitchen</pre>
</ul>
<a name="FS20tx"></a>
<h3>Misc. RF transmitters (FS20/EM/S300 etc.)</h3>
<ul>
<a href="commandref.html#autocreate">autocreate</a> will create
automatically fhem FS20/EM/S300/HMS devices, the following description is
for doing it manually.<br><br>
Wait a while, until the transmitter sent some data. In the logfile
(Browser window: "All together" -> Logs:Logfile:text) a line
will appear:<pre>
FS20 Unknown device &lt;HOUSECODE, Button &lt;BTN&gt; Code &lt;CDE&gt;, please define it</pre>
Now define a device:<pre>
define piri1 FS20 &lt;HOUSECODE&gt; &lt;BTN&gt;</pre>
Set the model attribute of the device:<pre>
attr lamp1 model fs20piri</pre>
to get only the commands available for this device.
<a href="commandref.html#model">Here</a> is a complete list of FS20
models.<br> For other device-types similar messages should appear.
</ul>
</ul>
<a name="FS20rx"></a>
<h3>Configuring FS20 receivers</h3>
<ul>
Configure the <a href="commandref.html#FS20">FS20</a> device in
fhem first with:<pre>
define lamp1 FS20 1234 56</pre>
Now press the button on the device for a while until its LED starts to
blink. Click on the "on" link in the fhem window to send a command. The
LED should terminate blinking, the device is programmed to housecode
1234, device code 56. You can also use the 4-base ELV notation.
Now set the model attribute of the device:<pre>
attr lamp1 model fs20st</pre>
to get only the commands available for this device.
<a href="commandref.html#model">Here</a> is a complete list of models.
</ul>
<a name="FHT"></a>
<h3>Configuring FHT devices</h3>
<ul>
<b>Note:</b> Creating a fhem FHT device automatically or manually does
not imply that the CUL or the FHZ is paired with it. For this purpose you
have to set the FHT to accept new "Cent" devices, and send a command to
it (e.g. set fht.kitchen desired-temp 20)<br><br>
<a href="commandref.html#autocreate">autocreate</a> will create
automatically FHT devices, the following description is for
doing it manually.<br><br>
Wait for a while (2-5 mins) till the FHT is sending some signals. In the
logfile ("All together" -> Logs:LogFile:text) a line should
appear:<br><pre>
FHZ1: Unknown FHT device detected, define one to get detailed information</pre>
Define your FHT device with an arbitrary code in order to load the FHT
module, see <a href="commandref.html#FHT">this</a> link for details:<pre>
define MyFHT FHT 1111</pre>
The next message in the log will contain more details:<pre>
FHT Unknown device &lt;HOUSECODE&gt;, please define it</pre>
Delete and create your device again:<pre>
delete MyFHT
define MyFHT FHT &lt;HOUSECODE&gt;</pre>
If there is no signal for a while, then check <a href="faq.html#faq6">
this</a> FAQ entry.
</ul>
<a name="at"></a>
<h3>Timed commands / Notification</h3>
<ul>
To execute commands at a given time / periodically, you have to define
devices of the type at. See the definition <a href="commandref.html#at">
here</a> and the examples <a href="example.06_at">here</a> The last link
only works if you are reading this HOWTO from your fhem Web.<br><br>
To execute commands if a device sent a message you have to define
devices of the type <a href="commandref.html#notify">notify</a> or
<a href="commandref.html#watchdog">watchdog</a>. In order to understand
the fhem events better you can open a telnet session to your fhem<pre>
telnet localhost 7072</pre>
and type <pre>
inform timer</pre>
Now you will receive in this telnet session all events, just like the
notifies/watchdogs do. You can even simulate events by using the
<a href="commandref.html#trigger">trigger</a> command:<pre>
trigger lamp1 on</pre>
</ul>
<a name="rooms"></a>
<h3>FHEMWEB (pgm2) look and feel</h3>
<ul>
It makes sense to group your devices into rooms by setting the room
attribute. FHEMWEB puts devices without a room attribute into the
"Unsorted" room. Devices in the room "hidden" will not be shown.
<br><br>
Set the title of the webpage by setting the title attribute of the global
device ("All together" -> global)<br><br>
Edit the colors / fonts by changing the style.css ("Edit files" ->
style.css)<br><br>
Further FHEMWEB attributes:
<a href="commandref.html#webname">webname</a>,
<a href="commandref.html#plotmode">plotmode</a>,
<a href="commandref.html#plotsize">plotsize</a>.
</ul>
<a name="log"></a>
<h3>Logging data</h3>
<ul>
To log messages into files, define devices of the type <a
href="commandref.html#FileLog">FileLog</a>. Autocreate will create
logfiles for newly detected devices. To log messages into a
database, see the contrib/dblog directory in the fhem
distribution.<br><br>
FHEMWEB has builtin support for displaying FileLog type logs as plots,
see the <a href="#plot">plot</a> section below.<br><br>
The size of each logfile will be determined by its wildcard characters
(year/month/week/day), look at the <a href="commandref.html#FileLog">
FileLog</a> definition.
Don't forget to enable archiving with the <a
href="commandref.html#nrarchive">nrarchive</a> or <a
href="commandref.html#archivedir">archivecmd</a> attributes.
</ul>
<a name="plot"></a>
<h3>Plotting logs</h3>
<ul>
Autocreate will create weblinks (i.e. plots) for newly detected devices.
The following section describes how to do it manually.<br>
To convert a log into a plot in FHEMWEB, set the
<a href="commandref.html#logtype">logtype</a> attribute of the
corresponding FileLog. Take a look at the available gnuplot files in the
"Edit files" section, they contain the corresponding FileLog definition
example.<br>
Note that the .gplot files are also used if you use SVG output and
not the gnuplot backend!<br><br>
When displaying the plot, you can convert it into a "weblink", which can
in turn have a room attribute to group more than one Plot together. If
the weblink refers to the current logfile, then it will be stored as a
CURRENT weblink, and it will always display the most recent log (you do
not have to redefine it if the logfile changes due to year/month/date
parameters in its name).
<br><br>
The logs can be converted to a plot either with gnuplot (which must be
installed and in your PATH), or via the builtin SVG module, in this case
your internet browser must support SVG. Firefox, opera and the
iPhone/Android borwser support SVG out of the box, Internet Explorer does
it via the Adobe "SVG viewer" plugin. SVG mode is the default, to change
it set the <a href="commandref.html#plotmode">plotmode</a> attribute to
gnuplot or gnuplot-scroll.<br><br>
In order to look at historic data, you can either convert at the
archive entries to weblink in "plotmode=gnuplot" mode, or use the
"plotmode=gnuplot-scroll" or "plotmode=SVG" modes. In the latter case
you'll get the possibility to zoom or scroll in the plot.<br><br>
Use the zoom and scroll icons at the top of the page.<br><br>
The current time scope (day, week, month..) set at the overview
page (containing weblinks) will also be used for graphics you open via
links (current log or archive) - there are no zoom and scroll icons
there.<br><br>
Note: the gnuplot files must have #FileLog entries in order to be
useable with scrolling, as the filtering happens with the FileLog get
function, see the supplied gnuplot files for an example.<br><br>
The order of the #FileLog lines need to match the corresponding
'awk'-(double-)lines!<br><br>
It make sense to build large logfiles for scrolling in them (year
resolution), or smaller ones if you do not want to use the zoom/scroll
feature. The size of the logfiles will be determined by its wildcard
characters (year/month/week/day), look at the FileLog definition.
Don't forget to enable archiving with the archivedir or archivecmd
attributes.<br><br>
</ul>
<a name="tips"></a>
<h3>FHEMWEB tips</h3>
<ul>
Click on the State link on the device page to get a documentation of
all its settable values, similarly clicking on Attributes will guide you
to the documentation of its attributes.
<br><br>
Password/HTTPS<br>
These features are implemented by apache, and apache must be configured
to redirect the page to 01_FHEMWEB.pm. For this purpose add the following
lines to your httpd.conf:<pre>
&lt;Proxy *&gt;
AuthType Basic
AuthName "Password Required"
AuthUserFile /home/httpd/etc/passwd
Require valid-user
Allow from 127.0.0.1
&lt;/Proxy&gt;
ProxyPass /fhem http://localhost:8083/fhem
ProxyPassReverse /fhem http://localhost:8083/fhem</pre>
and then restart httpd with apachectl graceful. To create the password
file, execute<br>
htpasswd -c /home/httpd/etc/passwd &lt;username&gt;
<br><br>
To enable HTTPS, please check the web. In essence:<br>
<ul>
<li>Edit httpd.conf, add:<pre>
LoadModule ssl_module lib/apache/mod_ssl.so
Include /etc/httpd/conf/ssl.conf</pre></li>
<li>Create a server certificate</li>
<li>Start httpd with the startssl option (SSL or the like must be set in
one of your system files, look at /etc/init.d/httpd).</li>
</ul>
<br><br>
To display "foreign" (non fhem) files as a plot or a just as plain text,
configure a fake logfile with the correct filename and an unused regexp,
e.g.<br><pre>
define messages FileLog /var/log/messages fakelog</pre>
</ul>
<br>
<a name="structure"></a>
<h3>Complex structures</h3>
<ul>
Put your devices in different rooms. You can now use the
room=&lt;roomname&gt; specification to set different devices at once.
See the <a href="commandref.html#devspec">devspec</a> paragraph for details.<br>
For more complex scenarios consider the <a href="commandref.html#structure">
structure</a> module. You can define different structure levels like
floors, buildings, etc. and set all elements of a given structure at once.
</ul>
</div>
<body>
</html>