2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 12:49:34 +00:00

Documentation changes

git-svn-id: https://svn.fhem.de/fhem/trunk@495 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2009-12-05 09:00:12 +00:00
parent 8fabbf057b
commit 8ddd07ab22
17 changed files with 106 additions and 606 deletions

View File

@ -551,3 +551,4 @@
- bugfix: CUL_RFR fixes (chaining RFR's should work) - bugfix: CUL_RFR fixes (chaining RFR's should work)
- bugfix: Path in the examples fixed (got corrupted) - bugfix: Path in the examples fixed (got corrupted)
- bugfix: PachLog fixes from Axel - bugfix: PachLog fixes from Axel
- bugfix: HOWTO/Examples revisited for correctness

View File

@ -12,29 +12,31 @@ all:
install:install-base install:install-base
-mv $(VARDIR)/fhem.cfg $(VARDIR)/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"` -mv $(VARDIR)/fhem.cfg $(VARDIR)/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"`
cp examples/sample_fhem $(VARDIR)/fhem.cfg cp examples_changed/sample_fhem $(VARDIR)/fhem.cfg
@echo @echo
@echo @echo
@echo Edit $(VARDIR)/fhem.cfg then type @echo Start fhem with
@echo perl $(BINDIR)/fhem.pl $(VARDIR)/fhem.cfg @echo perl $(BINDIR)/fhem.pl $(VARDIR)/fhem.cfg
install-pgm2:install-base install-pgm2:install-base
cp -r webfrontend/pgm2/* $(MODDIR)/FHEM cp -r webfrontend/pgm2/* $(MODDIR)/FHEM
cp docs/commandref.html docs/faq.html docs/HOWTO.html $(MODDIR)/FHEM cp docs/commandref.html docs/faq.html docs/HOWTO.html $(MODDIR)/FHEM
-mv $(VARDIR)/fhem.cfg $(VARDIR)/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"` -mv $(VARDIR)/fhem.cfg $(VARDIR)/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"`
cp examples/sample_pgm2 $(VARDIR)/fhem.cfg cp examples_changed/sample_pgm2 $(VARDIR)/fhem.cfg
cd examples; for i in *; do cp -r $$i $(MODDIR)/FHEM/example.$$i; done cd examples_changed; for i in *; do cp -r $$i $(MODDIR)/FHEM/example.$$i; done
@echo @echo
@echo @echo
@echo Edit $(VARDIR)/fhem.cfg then type @echo Start fhem with
@echo perl $(BINDIR)/fhem.pl $(VARDIR)/fhem.cfg @echo perl $(BINDIR)/fhem.pl $(VARDIR)/fhem.cfg
install-base: install-base:
mkdir -p $(BINDIR) $(MODDIR) $(VARDIR) mkdir -p $(BINDIR) $(MODDIR) $(VARDIR)
cp fhem.pl $(BINDIR) cp fhem.pl $(BINDIR)
cp -r FHEM $(MODDIR) cp -r FHEM $(MODDIR)
perl -pi -e 's,modpath \.,modpath $(MODDIR),' examples/[a-z]* rm -rf examples_changed
perl -pi -e 's,/tmp,$(VARDIR),' examples/[a-z]* cp -r examples examples_changed
perl -pi -e 's,modpath \.,modpath $(MODDIR),' examples_changed/[a-z]*
perl -pi -e 's,([^h]) /tmp,$$1 $(VARDIR),' examples_changed/[a-z]*
dist: dist:
@echo Version is $(VERS), Date is $(DATE) @echo Version is $(VERS), Date is $(DATE)

View File

@ -5,10 +5,6 @@
<body style="background-color: white;"> <body style="background-color: white;">
<h2>FHEMWEB Howto</h2> <h2>FHEMWEB Howto</h2>
<b>Note:</b> Don't forget to type "save" in the FHEMWEB/pgm2 "Fhem cmd"
input field after defining a device or setting its attribute. Otherwise the
changes will disappear after the next start.</br><br>
<a href="#starting">Starting</a><br/> <a href="#starting">Starting</a><br/>
<a href="#FHZ">Attaching an FHZ device</a><br/> <a href="#FHZ">Attaching an FHZ device</a><br/>
<a href="#FS20rx">Configuring FS20 receivers</a><br/> <a href="#FS20rx">Configuring FS20 receivers</a><br/>
@ -25,11 +21,17 @@
<a name="starting"/> <a name="starting"/>
<h3>Starting</h3> <h3>Starting</h3>
<ul> <ul>
Install & start fhem with the command:<pre> First install the Device::SerialPort (or Win32::SerialPort) perl module
with the command <code>"cpan -i Device::Serial"</code></br>
The default configuration will install fhem into /usr/local/bin,
/usr/local/lib/FHEM and /var/log/fhem. Edit the Makefile to change
this.
To install & start fhem type:<pre>
make install-pgm2 make install-pgm2
perl /usr/local/bin/fhem.pl /var/log/fhem/fhem.cfg</pre> perl /usr/local/bin/fhem.pl /var/log/fhem/fhem.cfg</pre>
The logfile should look like:<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 8083 opened
2008.06.15 16:17:03 0: Server started (version ...) 2008.06.15 16:17:03 0: Server started (version ...)
</pre> </pre>
@ -44,57 +46,77 @@
Attach the FHZ1000 or FHZ1300 to your computer, and look for a file named Attach the FHZ1000 or FHZ1300 to your computer, and look for a file named
/dev/ttyUSB0 or /dev/tts/USB0 (or /var/elv on the Fritz!Box). /dev/ttyUSB0 or /dev/tts/USB0 (or /var/elv on the Fritz!Box).
Define it for fhem (by typing it in the Define it for fhem (by typing it in the
"Fhem cmd" input widget):<pre> "Fhem cmd" input field in the browser):<pre>
define FHZ1 FHZ /dev/ttyUSB0</pre> define FHZ1 FHZ /dev/ttyUSB0</pre>
Look <a href="commandref.html#define">here</a> for more. You can find details <a href="commandref.html#define">here</a> and
<a href="commandref.html#FHZ">here</a>. Instead of an FHZ you can also
use a <a href="commandref.html#CUL">CUL</a> with slightly different
parameters.
</ul> <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="FS20rx"/> <a name="FS20rx"/>
<h3>Configuring FS20 receivers</h3> <h3>Configuring FS20 receivers</h3>
<ul> <ul>
Configure the device in fhem first e.g. with:<pre> Configure the <a href="commandref.html#FS20">FS20</a> device in
fhem first with:<pre>
define lamp1 FS20 1234 56</pre> define lamp1 FS20 1234 56</pre>
Now press the button on the device for a while until its LED starts to 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 blink. Click on the "on" link in the fhem window to send a command. The
LED should terminate blinking, the device is programmed.<br/> LED should terminate blinking, the device is programmed to housecode
Set the model attribute of the device:<pre> 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> attr lamp1 model fs20st</pre>
to get only the commands available for this device. to get only the commands available for this device.
<a href="commandref.html#model">Here</a> is a complete list of models.<br> <a href="commandref.html#model">Here</a> is a complete list of models.<br>
</ul> </ul>
<a name="FS20tx"/> <a name="FS20tx"/>
<h3>Configuring FS20 transmitters</h3> <h3>Misc. RF transmitters (FS20/EM/S300 etc.)</h3>
<ul> <ul>
Make sure the global loglevel is at least 3 (attr global verbose 3, check Wait a while, until the transmitter sent some data. In the logfile
the fhem.cfg file in the Edit files section).<br> (Browser window: "All together" -> Logs:Logfile:text) a line
Now make sure that the transmitter is sending a signal. In the logfile will appear:<pre>
(FHEMWEB: "All together" -> Logs -> Logfile -> text) a line should FS20 Unknown device &lt;HOUSECODE, Button &lt;BTN&gt; Code &lt;CDE&gt;, please define it</pre>
appear:<pre> FS20 Unknown device HOUSECODE, Button BTN Code CDE, please
define it</pre>
Now define a device:<pre> Now define a device:<pre>
define piri1 FS20 HOUSECODE BTN</pre> define piri1 FS20 &lt;HOUSECODE&gt; &lt;BTN&gt;</pre>
Set the model attribute of the device:<pre> Set the model attribute of the device:<pre>
attr lamp1 model fs20piri</pre> attr lamp1 model fs20piri</pre>
to get only the commands available for this device. to get only the commands available for this device.
<a href="commandref.html#model">Here</a> is a complete list of models.<br> <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> </ul>
<a name="FHT"/> <a name="FHT"/>
<h3>Configuring FHT devices</h3> <h3>Configuring FHT devices</h3>
<ul> <ul>
Make sure the global loglevel is at least 3 (attr global verbose 3, check Wait for a while (2-5 mins) till the FHT is sending some signals. In the
the fhem.cfg file in the Edit files section).<br> logfile ("All together" -> Logs:LogFile:text) a line should
Now wait for a while, till the FHT is sending some signals. In the appear:<br><pre>
logfile (FHEMWEB: "All together" -> Logs -> LogFile -> text) a line FHZ1: Unknown FHT device detected, define one to get detailed information</pre>
should appear:<pre> FHT Unknown device HOUSECODE, please define it</pre>
Now define a device:<pre> Define your FHT device with an arbitrary code in order to load the FHT
define livingroom FHT HOUSECODE</pre> module, see <a href="commandref.html#FHT">this</a> link for details:<pre>
If there is no signal for a while, the check <a href="faq.html#faq6"> 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. this</a> FAQ entry.
</ul> </ul>
@ -103,11 +125,22 @@
<ul> <ul>
To execute commands at a given time / periodically, you have to define 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"> devices of the type at. See the definition <a href="commandref.html#at">
here</a> or examples <a href="example.06_at">here</a>.<br/><br/> 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, then you have to define To execute commands if a device sent a message you have to define
devices of the type notify. See the definition devices of the type <a href="commandref.html#notify">notify</a> or
<a href="commandref.html#notify">here</a>. <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> </ul>
<a name="rooms"/> <a name="rooms"/>
@ -141,11 +174,12 @@
FHEMWEB has builtin support for displaying FileLog type logs as plots, FHEMWEB has builtin support for displaying FileLog type logs as plots,
see the <a href="#plot">plot</a> section below.<br/><br/> see the <a href="#plot">plot</a> section below.<br/><br/>
See the attributes The size of each logfile will be determined by its wildcard characters
<a href="commandref.html#archivedir">archivedir</a>, (year/month/week/day), look at the <a href="commandref.html#FileLog">
<a href="commandref.html#archivecmd">archivecmd</a>, FileLog</a> definition.
<a href="commandref.html#nrarchive">nrarchive</a> Don't forget to enable archiving with the <a
attributes for archiving the logs. href="commandref.html#nrarchive">nrarchive</a> or <a
href="commandref.html#archivedir">archivecmd</a> attributes.
</ul> </ul>
<a name="plot"/> <a name="plot"/>
@ -160,33 +194,22 @@
When displaying the plot, you can convert it into a "weblink", which can 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 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 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. 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/> <br/><br/>
The logs can be converted to a plot either with gnuplot (which must be 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 installed and in your PATH), or via the builtin SVG module, in this case
your internet browser must support SVG. Firefox and opera support SVG your internet browser must support SVG. Firefox, opera and the
out of the box, Internet Explorer does it via the Adobe "SVG viewer" iPhone/Android borwser support SVG out of the box, Internet Explorer does
plugin. To use SVG graphics, set the <a it via the Adobe "SVG viewer" plugin. To use SVG graphics, set the <a
href="commandref.html#plotmode">plotmode</a> attribute to SVG.<br><br> href="commandref.html#plotmode">plotmode</a> attribute to SVG.<br><br>
In order to look at historic data, you can either convert at the archive To zoom in the log you have to set plotmode to gnuplot-scroll or SVG. The
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. Note: the
gnuplot files must have #FileLog entries in order to be useable with gnuplot files must have #FileLog entries in order to be useable with
scrolling, as the filtering happens with the FileLog scrolling, see the supplied gnuplot files for an example.<br><br>
<a href="commandref.html#FileLogget">get</a> function, see the supplied
gnuplot files for an example.<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
<a href="commandref.html#FileLog">FileLog</a> definition. Don't forget to
enable archiving with the
<a href="commandref.html#archivedir">archivedir</a> or
<a href="commandref.html#archivedir">archivecmd</a> attributes.
</ul> </ul>
@ -231,10 +254,9 @@
To display "foreign" (non fhem) files as a plot or a just as plain text, 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, configure a fake logfile with the correct filename and an unused regexp,
e.g.<br><pre> e.g.<br><pre>
define messages FileLog /var/log/messages fakelog define messages FileLog /var/log/messages fakelog</pre>
</pre>
<br/><br/>
</ul> </ul>
<br>
<a name="structure"/> <a name="structure"/>
<h3>Complex structures</h3> <h3>Complex structures</h3>

View File

@ -3403,7 +3403,7 @@ A line ending with \ will be concatenated with the next one, so long lines
<b>Attributes</b> <b>Attributes</b>
<ul> <ul>
<a name="webname="></a> <a name="webname"></a>
<li>webname<br/> <li>webname<br/>
Path after the http://hostname:port/ specification. Defaults to fhem, Path after the http://hostname:port/ specification. Defaults to fhem,
i.e the default http address is http://localhost:8083/fhem i.e the default http address is http://localhost:8083/fhem

View File

@ -1,22 +0,0 @@
On the telnet prompt do:
{FS20_Parse(undef, "<code>");}
e.g.
{FS20_Parse(undef, "81xx04xx0101a0011234030011")}
where <code> is one of:
81xx04xx0101a0011234030011 FS20 dev: 1234 button: 03 on (11)
81xx04xx0101a0011234030000 FS20 dev: 1234 button: 03 off (00)
810d04xx4027a001de53187654321f KS300: Raincounter hex:123 (ca 75l/m2),
Wind 45.6 km/h Humidity: 78%, Temp: 13.5
Unknown fields: d,e,f
{FhzDecode("810d04xx4027a001de53187654321f")}
810e04d70213a001b16d000003000000 RM100-2 smoke on
810e04d70213a001b16d000000000000 RM100-2 smoke off
81xx04xx0101a0011234030011 FS20 dev: 1234 button: 03 on (11)
To send it:
set FHZ raw 04 0101a0011234030011

View File

@ -1,28 +0,0 @@
810e041f0213a001d396000000000000
// Reset:
810e04ea0293a001ae06000000000000
// Normal:
810e046a0213a001ae06000000000000
==========
810e04ba0293a001b1d3000000000000
810e04a90293a0016a09000000000000
By andikt:
// Batteries are inserted into the smoke detector
810e04540293a001b16d000000000000
[the same comes 10 times]
// No smoke applied, status messages each 30min
810e04d40213a001b16d000000000000
// Smoke applied, detector beeps loud
810e04d70213a001b16d000003000000
// no more smoke, detector stops beeping, red LED flashes for some more
// seconds
810e04d40213a001b16d000000000000

View File

@ -1,74 +0,0 @@
Startup
-------
1a
PUT C9 - 02 01 1F 64
1.st fhz1000: C9 - 01 02 1F 02 78 05 5C 24 FF
2.nd fhz1000: C9 - 01 02 1F 02 78 05 5C 24 FF
3.rd fhz1000: C9 - 01 02 1F 02 78 05 5C 0A FF
1b
PUT C9 - 02 01 1F 0A
4.th fhz1000: C9 - 01 02 1F 02 78 07 B6 22 80
1c
PUT C9 - 02 01 1F 60
C9 - 01 02 1F 02 78 07 1C 22 80
2
PUT 04 - C9 01 84 57 02 08
1.st fhz1000: C9 - 01 02 84 01 08 05 FF 13 6E 21 BC 4B 1B # Serial no: 136E21BC (?)
3.rd fhz1000: C9 - 01 02 84 01 08 05 FF 13 6E 29 0E 51 18 # Serial no: 136E290E (?)
3
PUT: 04 - C9 01 86
PUT: 04 - C9 01 96
PUT: C9 - 02 01 61 04 0C 10 12 0A # Set Date to 2004-12-16 14:10
Switching FS20 device on / off
------------------------------
PUT: 04 - 020101 - HHHH BT VL
HHHH: Transmitter (Hauscode)
BT: Button
VL: Values:
00 => off,
01 => dim06%,
02 => dim12%,
03 => dim18%,
04 => dim25%,
05 => dim31%,
06 => dim37%,
07 => dim43%,
08 => dim50%,
09 => dim56%,
0A => dim62%,
0B => dim68%,
0C => dim75%,
0D => dim81%,
0E => dim87%,
0F => dim93%,
10 => dim100%,
11 => on, # Set to previous dim value (before switching it off)
12 => toggle, # between off and previous dim val
13 => dimup,
14 => dimdown,
15 => dimupdown,
16 => timer,
17 => sendstate,
18 => off-for-timer,
19 => on-for-timer,
1a => on-old-for-timer,
1b => reset,
The FSST20 switches on for dim*.
When setting bit 6 (counted from 1) in the value, you can also
send a further byte, the time as suggested in snippet_6.
The FS20ST only respects this for the values
timer, off-for-timer, on-for-timer
If the timer is set, then it works for dim*, on, *-for-timer
sendstate does not work for the FS20ST
=================================

View File

@ -1,102 +0,0 @@
// Init FHZ1000PC (Studio) mit FHT80b und HMS
<- 81 06 c9 2c 02 01 1f 0a
-> 81 0b c9 fb 01 02 1f 02 78 07 b6 22 80
<- 81 08 04 ba c9 01 84 5e 0b 03
-> 81 0a c9 ea 01 02 84 01 03 01 5b 03
<- 81 05 04 50 c9 01 86
<- 81 0b 04 __ 02 01 83 HH HH 65 ff 66 ff // FHT80b 1
<- 81 0b 04 __ 02 01 83 HH HH 65 ff 66 ff // FHT80b 2
<- 81 06 04 62 c9 01 96 02
<- 81 0a c9 af 02 01 61 05 0a 0e 16 18 // Datum Uhrzeit
// Init FHZ1000PC (Standard) mit FHT80b und HMS
<- 81 06 c9 82 02 01 1f 60
-> 81 0b c9 61 01 02 1f 02 78 07 1c 22 80
<- 81 08 04 af c9 01 84 57 02 08
-> 81 0f c9 __ 01 02 84 01 08 07 80 xx xx xx xx 51 0f // Seriennummer
<- 81 05 04 50 c9 01 86
<- 81 0b 04 __ 02 01 83 HH HH 65 ff 66 ff // FHT80b 1
<- 81 05 04 60 c9 01 96
<- 81 0a c9 __ 02 01 61 jj mm tt ss mm // Datum Uhrzeit
<- 81 05 04 4f c9 01 85 // Speicherabfrage
-> 81 07 c9 ac 01 02 85 01 23 // 23 ?bytes? frei
<- 81 0b 04 __ 02 01 83 HH HH 65 ff 66 ff // FHT80b 2
<- 81 05 04 4f c9 01 85 // Speicherabfrage
-> 81 07 c9 a5 01 02 85 01 1c // 1c ?bytes? frei
// FHZ1000PC
<- 81 0a c9 __ 02 01 61 jj mm tt ss mm // Uhrzeit 50 mal am Anfang einer Minute
<- 81 05 04 4f c9 01 85 // Speicherabfrage
-> 81 07 c9 __ 01 02 85 01 xx // xx = ?bytes? frei
// FHT80b
// SB=StartByte LL=Laenge TT=TelegrammType BC=BlockCheck ST=Status
// HH=Hauscode
// SB LL TT BC CODE FUNKT ST Param
-> 81 0c 04 __ 09 09 a0 01 HH HH 00 00 _6 xx // Istwert Stellantrieb
-> 81 0c 04 __ 09 09 a0 01 HH HH 00 00 2c xx // Synczeit
-> 81 0c 04 __ 09 09 a0 01 HH HH 14 00 69 xx // Montag von1 in 1/6 Stunde (10 Min.)
-> 81 0c 04 __ 09 09 a0 01 HH HH 15 00 69 xx // Montag bis1
-> 81 0c 04 __ 09 09 a0 01 HH HH 16 00 69 xx // Montag von2 (90 = frei)
-> 81 0c 04 __ 09 09 a0 01 HH HH 17 00 69 xx // Montag bis2
-> 81 0c 04 __ 09 09 a0 01 HH HH 18 00 69 xx // Dienstag von1
-> 81 0c 04 __ 09 09 a0 01 HH HH 19 00 69 xx // bis 1
-> 81 0c 04 __ 09 09 a0 01 HH HH 1a 00 69 xx // von2
-> 81 0c 04 __ 09 09 a0 01 HH HH 1b 00 69 xx // bis2
-> 81 0c 04 __ 09 09 a0 01 HH HH 1c 00 69 xx //Mittwoch von1
-> 81 0c 04 __ 09 09 a0 01 HH HH 1d 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 1e 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 1f 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 20 00 69 xx // Donnerstag
-> 81 0c 04 __ 09 09 a0 01 HH HH 21 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 22 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 23 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 24 00 69 xx // Freitag
-> 81 0c 04 __ 09 09 a0 01 HH HH 25 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 26 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 27 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 28 00 69 xx // Samstag
-> 81 0c 04 __ 09 09 a0 01 HH HH 29 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2a 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2b 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2c 00 69 xx // Sonntag
-> 81 0c 04 __ 09 09 a0 01 HH HH 2d 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2e 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2f 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 3e 00 69 xx // 0=auto 1=manuell 2=Urlaub
-> 81 0c 04 __ 09 09 a0 01 HH HH 3f 00 69 xx // Urlaub Endeuhrzeit oder Endetag
-> 81 0c 04 __ 09 09 a0 01 HH HH 40 00 69 xx // Urlaub Endetag 10=heute 11=morgen 0x=Endemonat
-> 81 0c 04 __ 09 09 a0 01 HH HH 41 00 69 xx // aktuelle Solltemperatur (x*0.5)
-> 81 0c 04 __ 09 09 a0 01 HH HH 42 00 69 xx // ist Temperatur (x/10)
-> 81 0c 04 __ 09 09 a0 01 HH HH 43 00 69 xx // ?????
-> 81 0c 04 __ 09 09 a0 01 HH HH 44 00 69 xx // bit0=Batterie 0=OK 1=leer bit5=Fenster 0=zu 1=offen
-> 81 0c 04 __ 09 09 a0 01 HH HH 4b 00 67 xx // ?????
-> 81 0c 04 __ 09 09 a0 01 HH HH 82 00 69 xx // Tag Temperatur (x*0.5)
-> 81 0c 04 __ 09 09 a0 01 HH HH 84 00 69 xx // Nacht Temperatur (x*0.5)
-> 81 0c 04 __ 09 09 a0 01 HH HH 85 00 69 04 // ?????
-> 81 0c 04 __ 09 09 a0 01 HH HH 8a 00 69 xx // Fenster offen Temperatur (x*0.5)
-> 81 0c 04 __ 09 09 a0 01 HH HH 7e 00 67 xx // ?????
<- 81 09 04 __ 02 01 83 HH HH 3e xx // Modus setzen 00=auto 01=manu 02=Urlaub
-> 81 0b 04 __ 84 09 83 01 HH HH 3e xx yy // Übernahmequittung yy=Speicherstelle
<- 81 09 04 __ 02 01 83 HH HH 41 xx // Solltemp setzen (x=soll/0.5)
Die anderen Register können genauso verändert werden.
//HMS100TF
-> 81 0e 04 __ 05 10 a0 01 HH HH 00 00 ss tt gu ff // Temp = (utt*0.04) Feuchte = (ffg*100/4096)
// Status bit7=Negative Temp. bit6=Batterie
//ST-2
<- 81 09 04 __ 02 01 01 a0 01 HH HH xx yy // xx=Taste yy=Funktion
//Funktionen
00 Aus
01-10 Dimmen direkt
11 Ein
12 Dimmen Eintastenmodus
13 Dimmen runter
14 Dimmen rauf
15 Umschalten
16 Timerprogrammierung start/stop
1b Auslieferungszustand

View File

@ -1,60 +0,0 @@
// FHT80b
// SB=StartByte LL=Laenge TT=TelegrammType CC=CRC ST=Status HH=Hauscode
// SB LL TT CC CODE FUNKT ST Param
-> 81 0c 04 __ 09 09 a0 01 HH HH 00 00 _6 xx // Istwert Stellantrieb
-> 81 0c 04 __ 09 09 a0 01 HH HH 00 00 2c xx // Synczeit ???
-> 81 0c 04 __ 09 09 a0 01 HH HH 14 00 69 xx // Montag von1 in 1/6
Stunde (10 Min.)
-> 81 0c 04 __ 09 09 a0 01 HH HH 15 00 69 xx // Montag bis1
-> 81 0c 04 __ 09 09 a0 01 HH HH 16 00 69 xx // Montag von2 (90 = frei)
-> 81 0c 04 __ 09 09 a0 01 HH HH 17 00 69 xx // Montag bis2
-> 81 0c 04 __ 09 09 a0 01 HH HH 18 00 69 xx // Dienstag von1
-> 81 0c 04 __ 09 09 a0 01 HH HH 19 00 69 xx // bis 1
-> 81 0c 04 __ 09 09 a0 01 HH HH 1a 00 69 xx // von2
-> 81 0c 04 __ 09 09 a0 01 HH HH 1b 00 69 xx // bis2
-> 81 0c 04 __ 09 09 a0 01 HH HH 1c 00 69 xx // Mittwoch von1
-> 81 0c 04 __ 09 09 a0 01 HH HH 1d 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 1e 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 1f 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 20 00 69 xx // Donnerstag
-> 81 0c 04 __ 09 09 a0 01 HH HH 21 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 22 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 23 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 24 00 69 xx // Freitag
-> 81 0c 04 __ 09 09 a0 01 HH HH 25 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 26 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 27 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 28 00 69 xx // Samstag
-> 81 0c 04 __ 09 09 a0 01 HH HH 29 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2a 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2b 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2c 00 69 xx // Sonntag
-> 81 0c 04 __ 09 09 a0 01 HH HH 2d 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2e 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 2f 00 69 xx
-> 81 0c 04 __ 09 09 a0 01 HH HH 3e 00 69 xx // 0=auto 1=manuell
2=Urlaub lang, 3=Urlaub kurz
-> 81 0c 04 __ 09 09 a0 01 HH HH 3f 00 69 xx // für Mode3 Uhrzeit, für
Mode2 Endtag des Monats
-> 81 0c 04 __ 09 09 a0 01 HH HH 40 00 69 xx // für Mode3 Resttage ab
aktuellem Datum, für Mode2 Endmonat
-> 81 0c 04 __ 09 09 a0 01 HH HH 41 00 69 xx // aktuelle Solltemperatur
(x*0.5)
-> 81 0c 04 __ 09 09 a0 01 HH HH 42 00 69 xx // ist Temperatur (Teil 1)
-> 81 0c 04 __ 09 09 a0 01 HH HH 43 00 69 xx // Ist-Temperatur (Teil 2)
(Die Ermittlung der Temperatur erfolgt nach der Formel Ist-Temp = (Teil2
* 255 +Teil1) / 10)
-> 81 0c 04 __ 09 09 a0 01 HH HH 44 00 69 xx // Status (Bit0=LowBatt,
Bit1=Untertemperatur, Bit4=Störung Fenterkontakt, Bit5=Fenster auf)
-> 81 0c 04 __ 09 09 a0 01 HH HH 45 00 69 xx // Manuelle Temperatur ??
-> 81 0c 04 __ 09 09 a0 01 HH HH 4b 00 67 xx // ?????
-> 81 0c 04 __ 09 09 a0 01 HH HH 7e 00 67 xx // ?????
-> 81 0c 04 __ 09 09 a0 01 HH HH 82 00 69 xx // Komfort-Temperatur
(x*0.5)
-> 81 0c 04 __ 09 09 a0 01 HH HH 84 00 69 xx // Absenk-Temperatur
(x*0.5)
-> 81 0c 04 __ 09 09 a0 01 HH HH 85 00 69 04 // Alarm-Temp.-Differenz
-> 81 0c 04 __ 09 09 a0 01 HH HH 8a 00 69 xx // Fenster offen Temperatur
(x*0.5)

View File

@ -1,39 +0,0 @@
fs20:
Modulation: 100% Amplitude, also pulse und spaces
Keine festen Bitraster, ein Bit besteht immer aus pulse UND space
Bit 0: pulse+space insgesamt ca 800us,
Bit 1: ca. 1200us
Beginn einer Uebertragung: ca 20 Startbits 0, zum Start eine 1
dann Uebertragung der Datenbytes jeweils 8 Bit + Pruefbit:
msb
...
lsb
pruefbit = xor-Verknuepfung der Datenbits.
Die Uebertragung hat folgenden Aufbau:
1. hausadr1
2. hausadr0
3. adr
4. cmd
5. arg1
...
n-1. argn optional
n. pruefbyte
pruefbyte = unterste 8 Bit aus summe aller bytes 1..n-1 +6
Hauscode=hausadr1*256 + hausadr
Dass ein hauscode 11111111 tatsaechlich fuer 0 steht, ist wohl klar.
cmd 0..31: Keine Argumente
cmd 32..63: Ein Argumentbyte
Jede Uebertragung wird 3* ausgesendet.
Grueße,
automat

View File

@ -1,60 +0,0 @@
Fs20-Codes
0 Aus
1..15 setze auf Helligkeit
16 An auf max
17 An alter wert
18 Toggel
19 Dim UP
20 Dim Down
21 DIM up/down
22 Prog.Modus/Zeit-Messung
23 Adressmeldung / Nix
24 Sofort Aus - Timer, sofort wieder an, evtl slow off
25 Sofort Max - timer, sofort aus
26 Sofort An alter Wert - timer, sofort aus
27 ?? AUS - RESET?
28 ?
29 ?
30 sofort Max, timer, dann sofort alter wert
31 sofort An alter Wert, nach Timer - sofort Aus
32-47 S auf Helligkeit mit Speed S
48 S An auf max,
49 S An alter wert
50 T Toggel fuer T, dann alter Wert
51 T Dim up, T ?
52 T Dim down, T ?
53 T Dim up/down, T ?
54 T Programmiere Einschaltzeit
55 ?
56 T Aus fuer EinT
57 T Ein Max fuer T, dann alter Wert
58 T Ein alter Wert fuer T, dann AUS
59 ??? RESET
60 T Progr. Einschalt-Speed mit T
61 T Progr. Ausschalt-Speed mit T
62 T Ein Max fuer T, dann alter Wert
63 T Alter Wert fuer T, dann wieder aktueller Wert
S und T Argumente 2. Byte. Zeit T=0: endlos
Übrigens ein paar Anfänge zum HMS-Protokoll:
adr1 adr2 typ arg1 arg2/seqnr arg3
typ:
0 temp/feucht hms100tf
1 temp hms100t
2 Wasser hms100w/wd
3 Rauch hms100rm
4 TuerFenster hms100tfk
5 TuerFenster hms100tfk
6 Gas hms100 MG/PG/CO
7 Gas hms100 MG/PG/CO
8 Gas hms100 MG/PG/CO
9-13 unbekannt
14 hms100 FI
15 ?
+16 ??
+32 Batteriewarnung
+64 neue Batterie
+128 Vorzeichen

View File

@ -1,127 +0,0 @@
S20-Funkschaltsystem
1. Protokoll
1.1. Datenrahmen:
Hauscode 16 bit
Adresse 8 bit
Befehl 8 bit (16bit, wenn im ersten Befehlsbyte das Erweiterungsbit gesetzt
ist.)
Quersumme 8 bit
1.1.1. Hauscode:
0-65535
Hauscode1: 8bit (High-Byte)
Hauscode2: 8bit (Low-Byte)
1.1.2. Adresse:
High-Nibble (4bit): Adreß-Gruppe (Bank / Raum)
15 = Master- / Funktionsgruppen-Bereich
0-14 = Adreßraum für Einzeladressen
Low-Nibble (4bit): Unter-Adresse
15 = alle der Adreß-Gruppe (lokal Master)
0-14 = Einzel-Adresse / Adresse der Funktionsgruppe
Das High-Nibble wählt die Adreß-Gruppe aus. Es stehen 15 Adreß-Gruppen zur
Verfügung. Die Adreß-Gruppe 15 wählt den Master- bzw.
Funktionsgruppen-Adreßbereich aus. Das Low-Nibble bestimmt innerhalb der
gewählten Adreß-Gruppe die anzusprechende Unter-Adresse. Zum Ausführen einer
globalen Master-Funktion müssen High- und Low-Nibble der Adresse 15 sein!
Reihenfolge der Eingabe und Speicherung von Hauscode und Adresse beim Setup
von Sendern:
1. HC1: [A1|A0|B1|B0|C1|C0|D1|D0]
2. HC2: [E1|E0|F1|F0|G1|G0|H1|H0]
3. Adr: [I1|I0|J1|J0|K1|K0|L1|L0]
1.1.3. Befehl:
Unteren 5 bit:
0 00h aus
1 01h an, 6,25% Einschalten auf Helligkeitsstufe 1 (min.)
2 02h an, 12,5%
...
15 0fh an, 93,75%
16 10h an, 100% Einschalten auf Helligkeitsstufe 16 (max.)
17 11h an, alter Wert Auf letztem Helligkeitswert einschalten
18 12h toggle Wechsel zwischen aus und an, alter Wert
19 13h dim up Eine Helligkeitsstufe heller
20 14h dim down Eine Helligkeitsstufe dunkler
21 15h dim up and down ..., + bis max, kurz warten, - bis min, kurz warten,
22 16h timeset Timerprogrammierung (Start, Ende)
23 17h send status Nur bei bidirektionalen Komponenten!
24 18h aus, für Timerzeit
25 19h an, 100%, für Timerzeit
26 1ah an, alter Wert, für Timerzeit
27 1bh reset (auf Auslieferzustand)
28 1ch frei
29 1dh frei
30 1eh frei
31 1fh frei
Bit 5: Erweiterungsbit (0 = ohne, 1 = Erweiterungsbyte zwischen Befehl und
Quersumme)
Bit 6: bidirektionaler Befehl (normal = 0)
Bit 7: Antwort eines Empfängers (normal = 0)
Erweiterungsbyte bei gesetztem Erweiterungsbit:
Ist im ersten Befehlsbyte das Erweiterungsbit gesetzt, wird ein
Erweiterungsbyte eingeschoben.
Für die Befehle 0 bis 18 und 24 bis 26 gilt folgende Codierung des
Erweiterungsbytes:
Das Byte gibt die einmalige Zeitdauer für den Timer in Schritten von 0,25s an.
Bei Befehl 22 wird der Timer des Empfängers fest auf den übertragenen
Timerwert gestellt.
Das Low-Nibble gibt den Zahlenwert an. Ist es Null (= 0), wird die
Timerfunktion ignoriert und der Verbraucher dauerhaft/sofort geschaltet.
Das High-Nibble dient als Multiplikator mit dem Faktor 2^x. Es sind nur Werte
kleiner oder gleich 12 sinnvoll. Größere Werte werden auf 12 begrenzt!
Zeit = 2^(High-Nibble) * Low-Nibble * 0,25s
Die maximale Zeitdauer beträgt damit ca. 4,25Std, die minimale 0,25s, sofern
dies jeweils von den Empfängern bis zu den angegebenen Grenzen unterstützt
wird.
1.1.4. Quersumme
8bit-Summe aus 6, Hauscode, Adresse und Befehl (und Erweiterungsbyte) bilden
Werden Repeater verwendet, so treten auch um 1 oder 2 erhöhte Quersummen auf,
die von den Empfängern im Normalfall akzeptiert werden sollten. Wurde von
einem Empfänger bis 1,6s vor einem Repeater-Befehl ein normaler Befehl
empfangen, so wird der Repeater-Befehl ignoriert.
1.1.5. Komplette Übertragung:
Synchr, HC1, Parity, HC2, Parity, Adresse, Parity, Befehl, Parity, Quersumme, Parity, EOT
13 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 1 bit
oder:
Synchr, HC1, Parity, HC2, Parity, Adr, Parity, Bef1, Parity, Bef2, Par, Quersumme, Par, EOT
13 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 1 bit
Übertragung beginnt mit MSB.
Die Übertragung für ein komplettes Datenpaket mit 1 Befehl dauert 47,6ms bis
65,6ms.
Wird an der Hand-FB eine Taste < 400ms gedrückt, so wird beim Loslassen
folgendes gesendet: DAT, 10msPAUSE, DAT, 10msPAUSE, DAT, 110msPAUSE
Wird eine Taste an der Hand-FB länger als 400ms gedrückt, so wird alle 250ms
folgendes gesendet: DAT, 10msPAUSE, DAT
Im AUS-Zustand schaltet ein Dimmer bei EIN mit alter Helligkeit ein.
Im AUS-Zustand schaltet ein Dimmer bei DIMUP mit voller Helligkeit ein.
Im EIN-Zustand wird bei DIMUP eine Stufe aufgedimmt.
Alle Befehle dürfen von Empfängern immer nur 1x ausgewertet werden. Gesendet
wird der Befehl 3x mit einer Pause von 10ms. Dim-Befehle werden nur 2x mit
einer Pause von ca. 10ms und 130ms gesendet. Nach einem erkannten Befehl
ignorieren die Empfänger für 120ms weitere Befehle. Befehle von Repeatern
werden für 1,6s ignoriert.

View File

@ -1,14 +0,0 @@
Get 81 0c c9 78 0102 1f04a0ffb6ffffff
Get 81 0c c9 da 0102 1f04a0ffb661ffff
Set 81 05 04 61 c90197
Set 81 05 04 63 c90199
Get 81 0d 04 ac 4027a0017100215000b30f KS300 msg
Set 81 05 04 50 c90186 initHMS
Set 81 06 04 62 c9019602 InitFS20 (+02?)
Set 81 06 c9 2c 02011f0a Init3 string
Set 81 09 04 46 020101xxxx0000 Set FS20 device off
Set 81 09 04 4e c901839e010161 Set fhtcode 97 (0x61)
Set 81 09 04 57 020101xxxx0011 Set FS20 device on
Set 81 0a c9 93 02016106050f1500 Time: 2006-05-15 21:00
Set 81 0a c9 a4 02016106050f1511 Time: 2006-05-15 21:17
Set 81 0b 04 8f 020183xxxx65ff66ff Request FHT refreshvalues

View File

@ -2,7 +2,7 @@
# fhem.pl configfile # fhem.pl configfile
# #
# Define a lamp (which is plugged in via an FS20ST). # Define a lamp (which is plugged in via an FS20ST).
# To program the FS20ST, start the server, plug the FS20ST in pressing its # To program the FS20ST, start the server, plug the FS20ST while pressing its
# button (it starts blinking), and then execute fhem.pl 7072 "set lamp on" # button (it starts blinking), and then execute fhem.pl 7072 "set lamp on"
# #

View File

@ -1,7 +1,7 @@
# #
# fhem.pl configfile # fhem.pl configfile
# #
# The challange: We have 2 rollades (which are connected via the FS20MS). # The challenge: We have 2 rollades (which are connected via the FS20MS).
# Button 3 on the FS20S20 should activate both rollades. There are three # Button 3 on the FS20S20 should activate both rollades. There are three
# solutions: # solutions:
# 1. Builtin commands # 1. Builtin commands

View File

@ -24,14 +24,15 @@ define wz FHT 3232 # type FHT, transmitter code 3232 (default value)
define fhz_timer at *03:30:00 set FHZ time define fhz_timer at *03:30:00 set FHZ time
######################### #########################
# If you wish to have up-to date information on certain strange parameters # If you wish to have up-to date information on certain parameters which can be
# then comment out the line below. My devices send a message when a value # modified on the FHT80b itself, then enable the line below. My device sends a
# changes, and send measured-temp, actuator and state messages regularly. # message when a value changes, and sends measured-temp, actuator and state
# Be patient: the reply comes in 5-10 minutes. # messages regularly, so I do not use this command.
define wz_refresh at *04:00:00 set wz report1 255 report2 255 # Be patient: the reply comes after 5-10 minutes.
#define wz_refresh at *04:00:00 set wz report1 255 report2 255
# alias for the above # alias for the above
define wz_refresh at *04:00:00 set wz refreshvalues #define wz_refresh at *04:00:00 set wz refreshvalues
################### ###################

View File

@ -21,8 +21,6 @@ define ks1 KS300 1234 250 # type KS300, with 250ml rain / counter
define wzlog FileLog /var/log/fhem/wz-%Y-%U.log wz:.*(temp|actuator).* define wzlog FileLog /var/log/fhem/wz-%Y-%U.log wz:.*(temp|actuator).*
# Make it accessible from 01_FHEMWEB.pm (webpgm2) # Make it accessible from 01_FHEMWEB.pm (webpgm2)
# Note: for FHEMWEB large logfiles (one per year) are recommended to be able to
# navigate
attr wzlog logtype fht:Temp attr wzlog logtype fht:Temp
# ks300 log # ks300 log
@ -36,8 +34,10 @@ attr kslog logtype ks300_1:Temp/Hum,ks300_2:Rain/Wind
# paranthesis, and your shell will probably bark. # paranthesis, and your shell will probably bark.
define tmplog notifyon wz:temp.* "/usr/local/bin/log.sh @ "@ %"" define tmplog notifyon wz:temp.* "/usr/local/bin/log.sh @ "@ %""
quit
######################### #########################
And here is /usr/local/bin/log.sh, don't forget chmod +x #And here is /usr/local/bin/log.sh, don't forget chmod +x
#!/bin/sh #!/bin/sh
fname=$1 fname=$1