2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-26 17:04:59 +00:00

SCIVT by peterp.

git-svn-id: https://svn.fhem.de/fhem/trunk@79 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2007-07-01 07:30:48 +00:00
parent 3fea70d919
commit 73a8e8a91a
10 changed files with 86 additions and 49 deletions

View File

@ -335,3 +335,4 @@
- feature: added EM1010PC/EM1000WZ/EM1000EM support
- bugfix: undefined messages for unknown HMS devs (Peter, 8.6)
- bugfix: em1010 and %oldvalue bugs (Peter, 9.6)
- bugfix: SCIVT solar controller (peterp, 1.7)

View File

@ -12,7 +12,6 @@ sub FHZ_ReadAnswer($$);
sub FhzCrc(@);
sub CheckFhzCrc($);
my $fhzdata = "";
my $msgstart = pack('H*', "81");# Every msg starts wit this
my %gets = (
@ -236,6 +235,7 @@ FHZ_Define($$)
$hash->{PortObj} = $po;
$hash->{FD} = $po->FILENO;
$hash->{DeviceName} = $dev;
$hash->{PARTIAL} = "";
DoInit($a[0]);
return undef;
@ -461,6 +461,7 @@ FHZ_Read($)
}
}
my $fhzdata = $hash->{PARTIAL};
Log 5, "FHZ/RAW: " . unpack('H*',$buf) .
" (Unparsed: " . unpack('H*', $fhzdata) . ")";
$fhzdata .= $buf;
@ -568,6 +569,7 @@ NEXTMSG:
}
}
$hash->{PARTIAL} = $fhzdata;
}
1;

View File

@ -334,23 +334,27 @@ split in multiple lines<br><br>
/var/log/fht1-%Y-%U.log
</li>
<li>ks300_1<br>
Plots the temperature and humidity of a ks300. The
corresponding filelog definitions (for the KS300 device named
ks300) looks like:<br>
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:<br>
define FileLog ks300log ks300:.*H:.*
/var/log/ks300-%Y-%U.log
</li>
<li>ks300_2<br>
Plots the rain (per hour and per day) and wind values of a
Plots the humidity and wind values of a
ks300. The corresponding filelog definition is the same as
above, both programs evaluate the same log.
</li>
<li>text<br>
Shows the logfile as it is (plain text).
</li>
</ul>
The corresponding gnuplot files must be installed, see the fhemweb.pl
configuration for the destination directory.<br>
The corresponding gnuplot files (up to the "text" one) must be
installed, see the fhemweb.pl configuration for the destination
directory.<br>
Example:<br>
attr fhtlog1 logtype ks300_1:Temp/Hum,ks300_2:Rain/Wind
attr fhtlog1 logtype ks300_1:Temp/Rain,ks300_2:Hum/Wind,text:Raw-data
</li><br>
@ -705,6 +709,29 @@ split in multiple lines<br><br>
<br>
</ul>
<a name="SCIVT"></a>
<h4>Type SCIVT</h4>
<ul>
<code>define &lt;name&gt; SCIVT &lt;SCD-device&gt;</code>
<br><br>
Define a SCD series solar controler device. Details see <a
href="http://english.ivt-hirschau.de/content.php?parent_id=CAT_64&doc_id=DOC_118">here</a>.
You probably need a Serial to USB controller like the PL2303.
<br>
Defining an SCIVT device will schedule an internal task, which reads the
status of the device every 5 minutes, and triggers notify/filelog commands.
<br>Note: Currently this device does not support a "set" function, only
a single get function which reads the device status immediately.
<br><br>
Example:
<ul>
<code>define scd SCIVT /dev/ttyUSB2</code><br>
</ul>
<br>
</ul>
<a name="FileLog"></a>
<h4>Type FileLog</h4>
<ul>

View File

@ -10,8 +10,8 @@
<h1>FHEM</h1>
GPL'd FHZ, FS20, FHT, HMS, KS300 and WS300 server for linux, formerly known as
fhz1000.pl
GPL'd server to access devices like FHZ1000/FHZ1300,EM1010PC,WS300,SCIVT.
Formerly known as fhz1000.pl
<h2>News (as of =DATE=, Version =VERS=)</h2>
@ -30,14 +30,19 @@ program or TCP/IP directly, like the supplied web frontends do.<br> <br>
Currently implemented features:<br>
<ul>
<li>reading and sending FS20 events (on/off/dimming, timer commands, etc)<br>
<li>Via the FHZ module (with access to one or more FHZ1000/FHZ1300 device):
<ul>
<li>reading and sending FS20 events (on/off/dimming, timer commands)<br>
<li>support of FS20 address features function group, local and global master
<li>reading and changing FHT80b parameters (temp, actuator, etc).<br>
The FHT8b seems to work too. <b>Note:</b> the FHT8 wont work.</li>
<li>reading HMS data (HMS100-T,-TF,-WD,-MG,-TFK and RM100-2)</li>
<li>reading KS300 data</li>
<li>reading WS300 data</li>
<li>reading EM1010PC/EM1000WZ data</li>
</ul>
</li>
<li>reading WS300 data, and up to 9 attached devices</li>
<li>reading EM1000WZ/EM1000EM data via an attached EM1010PC</li>
<li>reading an attached SCIVT device</li>
<li>logging events to files (or database), with regexp filters</li>
<li>notifying external programs or internal modules when receiving certain
events</li>

View File

@ -135,6 +135,7 @@ my %intAt; # Internal at timer hash.
my $intAtCnt=0;
my $reread_active = 0;
my $AttrList = "room comment";
my $cvsid = '$Id: fhem.pl,v 1.21 2007-07-01 07:30:48 rudolfkoenig Exp $';
$init_done = 0;
@ -1648,5 +1649,5 @@ doGlobalDef($)
CommandAttr(undef, "global verbose 3");
CommandAttr(undef, "global configfile $arg");
CommandAttr(undef, "global logfile -");
CommandAttr(undef, "global version =VERS= from =DATE=");
CommandAttr(undef, "global version =VERS= from =DATE= ($cvsid)");
}

View File

@ -1,27 +1,22 @@
#Sun Jun 24 13:03:37 2007
attr global logfile -
attr global port 7072 global
attr global verbose 3
attr global statefile test/fhem.save
attr global modpath .
attr global port 7072 global
attr global statefile test/fhem.save
attr global verbose 3
define FHZ FHZ none
define floor.lamp FS20 1234 00
define window.lamp FS20 1234 02
define marqee FS20 1234 07
define cellar FS20 1234 13
defattr
define btn4 FS20 1234 03
define wz FHT 1235
define cellar FS20 1234 13
define fl FHT 1236
define tf1 HMS 1237
def ks1 KS300 1238
# The path must be absolute, else it won't work appear in fhemweb.pl (webpgm2)
define fllog FileLog /tmp/fhem/test/fl-%Y-%U.log fl:.*(temp|actuator).*
define wzlog FileLog /tmp/fhem/test/wz-%Y-%U.log wz:.*(temp|actuator).*
define outlog FileLog /tmp/fhem/test/out-%Y-%U.log out1:.*(H:).*
define floor.lamp FS20 1234 00
define marqee FS20 1234 07
define n_btn4 notify btn4 /usr/local/bin/shared/setroll "%"
define tf1 HMS 1237
define window.lamp FS20 1234 02
define wz FHT 1235
define x SCIVT none
defattr

View File

@ -1,4 +1,4 @@
#Sat Jun 9 10:53:09 2007
#Sun Jun 24 13:09:02 2007
setstate FHZ fhtbuf: 1c
setstate FHZ 2006-02-12 14:03:39 fhtbuf 23
setstate FHZ 2006-03-26 08:47:36 init2 deadbeefdeadbe
@ -32,13 +32,11 @@ setstate fl 2006-03-26 08:50:55 unknown_85 4
setstate fl 2006-03-26 08:50:46 wed-from1 06:00
setstate fl 2006-03-26 08:50:46 wed-to1 23:00
setstate fl 2006-03-26 08:50:55 windowopen-temp 12.0 (Celsius)
setstate fllog active
setstate floor.lamp ???
setstate global <no definition>
setstate marqee on
setstate marqee 2006-04-01 12:46:02 state on
setstate n_btn4 disabled
setstate outlog active
setstate tf1 T: 20.3 H: 31.3 Bat: ok
setstate tf1 2006-04-11 09:48:48 battery Bat: ok
setstate tf1 2006-04-11 09:48:48 humidity 31.3 (%)
@ -70,4 +68,12 @@ setstate wz 2006-03-26 08:52:31 unknown_85 4
setstate wz 2006-03-26 08:50:36 wed-from1 06:00
setstate wz 2006-03-26 08:50:36 wed-to1 23:00
setstate wz 2006-03-26 08:52:31 windowopen-temp 12.0 (Celsius)
setstate wzlog active
setstate x R:13,66; 0,0;30;13,62;15,09;- 0,2; 2,8;
setstate x 2007-06-24 13:08:30 Is 0,0
setstate x 2007-06-24 13:08:30 Temp 30
setstate x 2007-06-24 13:08:30 Vs 13,66
setstate x 2007-06-24 13:08:30 maxI 2,8
setstate x 2007-06-24 13:08:30 maxV 15,09
setstate x 2007-06-24 13:08:30 minI - 0,2
setstate x 2007-06-24 13:08:30 minV 13,62

View File

@ -3,7 +3,7 @@
=================
#=================
set terminal png
set output '<OUT>.png'
set xdata time

View File

@ -14,6 +14,7 @@ set title '<IN>'
set grid
set ylabel "Temperature (Celsius)"
set y2label "Humidity (%)"
set y2label "Rain (l/m2)"
plot "<IN>" using 1:4 axes x1y1 title 'Temperature' with lines,\
"<IN>" using 1:6 axes x1y2 title 'Rel. Humidity (%)' with lines
"<grep -v avg_ <IN> | perl -ane '@a = split(\"[_:]\", $F[0]); if(defined($lh) && $lh ne $a[1]) { printf(\"${ld}_$lh:30:00 %f\n\", $hv); $hv = 0; } if($lv) { $hv += ($F[9]-$lv); } $lh = $a[1]; $ld = $a[0]; $lv = $F[9]; END { printf(\"${ld}_$lh:30:00 %f\n\", $hv) }'" using 1:2 axes x1y2 title 'Rain/h' with histeps,\
"<grep -v avg_ <IN> | perl -ane '@a = split(\"[_]\", $F[0]); if(defined($ld) && $ld ne $a[0]) { printf(\"${ld}_12:00:00 %f\n\", $dv); $dv = 0; } if($lv) { $dv += ($F[9]-$lv); } $ld = $a[0]; $lv = $F[9]; END {printf(\"${ld}_12:00:00 %f\n\", $dv)}'" using 1:2 axes x1y2 title 'Rain/day' with histeps

View File

@ -14,7 +14,6 @@ set title '<IN>'
set grid
set ylabel "Wind (Km/h)"
set y2label "Rain (l/m2)"
set y2label "Humidity (%)"
plot "<IN>" using 1:8 axes x1y1 title 'Wind' with lines,\
"<grep -v avg_ <IN> | perl -ane '@a = split(\"[_:]\", $F[0]); if(defined($lh) && $lh ne $a[1]) { printf(\"${ld}_$lh:30:00 %f\n\", $hv); $hv = 0; } if($lv) { $hv += ($F[9]-$lv); } $lh = $a[1]; $ld = $a[0]; $lv = $F[9]; END { printf(\"${ld}_$lh:30:00 %f\n\", $hv) }'" using 1:2 axes x1y2 title 'Rain/h' with histeps,\
"<grep -v avg_ <IN> | perl -ane '@a = split(\"[_]\", $F[0]); if(defined($ld) && $ld ne $a[0]) { printf(\"${ld}_12:00:00 %f\n\", $dv); $dv = 0; } if($lv) { $dv += ($F[9]-$lv); } $ld = $a[0]; $lv = $F[9]; END {printf(\"${ld}_12:00:00 %f\n\", $dv)}'" using 1:2 axes x1y2 title 'Rain/day' with histeps
"<IN>" using 1:6 axes x1y2 title 'Rel. Humidity (%)' with lines