mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 12:49:34 +00:00
actuator and report commands for the FHT modified
git-svn-id: https://svn.fhem.de/fhem/trunk@149 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
13d681f44f
commit
ea30f6f6b4
@ -10,19 +10,15 @@ sub getFhtMin($);
|
|||||||
sub getFhtBuffer($);
|
sub getFhtBuffer($);
|
||||||
|
|
||||||
my %codes = (
|
my %codes = (
|
||||||
"0000.6" => "actuator",
|
"0000.." => "actuator",
|
||||||
"00002a" => "lime-protection",
|
"0100.." => "actuator1",
|
||||||
"00002c" => "synctime", # Not verified
|
"0200.." => "actuator2",
|
||||||
"0000aa" => "code_0000aa",
|
"0300.." => "actuator3",
|
||||||
"0000ba" => "code_0000ba",
|
"0400.." => "actuator4",
|
||||||
"0100.6" => "actuator1", # Not verified (1-8)
|
"0500.." => "actuator5",
|
||||||
"0200.6" => "actuator2",
|
"0600.." => "actuator6",
|
||||||
"0300.6" => "actuator3",
|
"0700.." => "actuator7",
|
||||||
"0400.6" => "actuator4",
|
"0800.." => "actuator8",
|
||||||
"0500.6" => "actuator5",
|
|
||||||
"0600.6" => "actuator6",
|
|
||||||
"0700.6" => "actuator7",
|
|
||||||
"0800.6" => "actuator8",
|
|
||||||
|
|
||||||
"140069" => "mon-from1",
|
"140069" => "mon-from1",
|
||||||
"150069" => "mon-to1",
|
"150069" => "mon-to1",
|
||||||
@ -60,9 +56,7 @@ my %codes = (
|
|||||||
"XX0069" => "measured-temp", # sum of next. two, never really sent
|
"XX0069" => "measured-temp", # sum of next. two, never really sent
|
||||||
"420069" => "measured-low",
|
"420069" => "measured-low",
|
||||||
"430069" => "measured-high",
|
"430069" => "measured-high",
|
||||||
"430079" => "code_430079",
|
|
||||||
"440069" => "warnings",
|
"440069" => "warnings",
|
||||||
"440079" => "code_440079",
|
|
||||||
"450069" => "manu-temp", # No clue what it does.
|
"450069" => "manu-temp", # No clue what it does.
|
||||||
|
|
||||||
"..0067" => "repeat1", # repeat the last data (?)
|
"..0067" => "repeat1", # repeat the last data (?)
|
||||||
@ -73,8 +67,8 @@ my %codes = (
|
|||||||
"620069" => "day",
|
"620069" => "day",
|
||||||
"630069" => "hour",
|
"630069" => "hour",
|
||||||
"640069" => "minute",
|
"640069" => "minute",
|
||||||
"650069" => "refresh",
|
"650069" => "report1",
|
||||||
"660069" => "init", # ?
|
"660069" => "report2",
|
||||||
|
|
||||||
"820069" => "day-temp",
|
"820069" => "day-temp",
|
||||||
"840069" => "night-temp",
|
"840069" => "night-temp",
|
||||||
@ -83,7 +77,7 @@ my %codes = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
my %cantset = (
|
my %cantset = (
|
||||||
"actuator" => 1,
|
"actuators" => 1,
|
||||||
"actuator1" => 1,
|
"actuator1" => 1,
|
||||||
"actuator2" => 1,
|
"actuator2" => 1,
|
||||||
"actuator3" => 1,
|
"actuator3" => 1,
|
||||||
@ -92,28 +86,20 @@ my %cantset = (
|
|||||||
"actuator6" => 1,
|
"actuator6" => 1,
|
||||||
"actuator7" => 1,
|
"actuator7" => 1,
|
||||||
"actuator8" => 1,
|
"actuator8" => 1,
|
||||||
"synctime" => 1,
|
|
||||||
"measured-temp" => 1,
|
"measured-temp" => 1,
|
||||||
"measured-high" => 1,
|
"measured-high" => 1,
|
||||||
"measured-low" => 1,
|
"measured-low" => 1,
|
||||||
"warnings" => 1,
|
"warnings" => 1,
|
||||||
"lime-protection"=>1,
|
|
||||||
"repeat1" => 1,
|
"repeat1" => 1,
|
||||||
"repeat2" => 1,
|
"repeat2" => 1,
|
||||||
|
|
||||||
"code_0000aa" => 1,
|
|
||||||
"code_0000ba" => 1,
|
|
||||||
"code_430079" => 1,
|
|
||||||
"code_440079" => 1,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
my %nosetarg = (
|
|
||||||
);
|
|
||||||
|
|
||||||
my %priority = (
|
my %priority = (
|
||||||
"desired-temp"=> 1,
|
"desired-temp"=> 1,
|
||||||
"mode" => 2,
|
"mode" => 2,
|
||||||
"refresh" => 3,
|
"report1" => 3,
|
||||||
|
"report2" => 3,
|
||||||
"holiday1" => 4,
|
"holiday1" => 4,
|
||||||
"holiday2" => 5,
|
"holiday2" => 5,
|
||||||
"day-temp" => 6,
|
"day-temp" => 6,
|
||||||
@ -165,14 +151,14 @@ sub
|
|||||||
FHT_Set($@)
|
FHT_Set($@)
|
||||||
{
|
{
|
||||||
my ($hash, @a) = @_;
|
my ($hash, @a) = @_;
|
||||||
my $ret;
|
my $ret = "";
|
||||||
|
|
||||||
return "\"set $a[0]\" needs at least two parameters" if(@a < 2);
|
return "\"set $a[0]\" needs at least two parameters" if(@a < 2);
|
||||||
|
|
||||||
my $name = shift(@a);
|
my $name = shift(@a);
|
||||||
# Backward compatibility, replace refreshvalues with refresh and init.
|
# Backward compatibility, replace refreshvalues with report1 and report2.
|
||||||
for(my $i = 0; $i < @a; $i++) {
|
for(my $i = 0; $i < @a; $i++) {
|
||||||
splice(@a,$i,1,("refresh","255","init","255"))
|
splice(@a,$i,1,("report1","255","report2","255"))
|
||||||
if($a[$i] eq "refreshvalues");
|
if($a[$i] eq "refreshvalues");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,19 +172,12 @@ FHT_Set($@)
|
|||||||
$allcmd .=" " if($allcmd);
|
$allcmd .=" " if($allcmd);
|
||||||
$allcmd .= $cmd;
|
$allcmd .= $cmd;
|
||||||
|
|
||||||
return "Unknown argument $cmd, choose one of " .
|
return "Unknown argument $cmd, choose one of " . join(" ", sort keys %c2bset)
|
||||||
join(" ", sort {$c2bset{$a} cmp $c2bset{$b} } keys %c2bset)
|
|
||||||
if(!defined($c2bset{$cmd}));
|
if(!defined($c2bset{$cmd}));
|
||||||
return "\"set $name\" needs a parameters"
|
return "\"set $name\" needs a parameter"
|
||||||
if(@a < 1 && !$nosetarg{$cmd});
|
if(@a < 1);
|
||||||
$ncmd++;
|
$ncmd++;
|
||||||
|
$val = shift(@a);
|
||||||
if($nosetarg{$cmd}) {
|
|
||||||
$val = undef;
|
|
||||||
} else {
|
|
||||||
$val = shift(@a);
|
|
||||||
}
|
|
||||||
|
|
||||||
$arg .= $c2bset{$cmd};
|
$arg .= $c2bset{$cmd};
|
||||||
|
|
||||||
if ($cmd =~ m/-temp/) {
|
if ($cmd =~ m/-temp/) {
|
||||||
@ -208,7 +187,7 @@ FHT_Set($@)
|
|||||||
if($val < 5.5 || $val > 30.5);
|
if($val < 5.5 || $val > 30.5);
|
||||||
my $a = int($val*2);
|
my $a = int($val*2);
|
||||||
$arg .= sprintf("%02x", $a);
|
$arg .= sprintf("%02x", $a);
|
||||||
$ret = sprintf("Rounded temperature to %.1f", $a/2) if($a/2 != $val);
|
$ret .= sprintf("Rounded temperature to %.1f", $a/2) if($a/2 != $val);
|
||||||
$val = sprintf("%.1f", $a/2);
|
$val = sprintf("%.1f", $a/2);
|
||||||
|
|
||||||
} elsif($cmd =~ m/-from/ || $cmd =~ m/-to/) {
|
} elsif($cmd =~ m/-from/ || $cmd =~ m/-to/) {
|
||||||
@ -217,9 +196,8 @@ FHT_Set($@)
|
|||||||
if($val !~ m/^([0-2]\d):([0-5]\d)/);
|
if($val !~ m/^([0-2]\d):([0-5]\d)/);
|
||||||
my $a = ($1*6) + ($2/10);
|
my $a = ($1*6) + ($2/10);
|
||||||
$arg .= sprintf("%02x", $a);
|
$arg .= sprintf("%02x", $a);
|
||||||
|
my $nt = sprintf("%02d:%02d", $1, int($2/10)*10);
|
||||||
my $nt = sprintf("%02d:%02d", $1, ($2/10)*10);
|
$ret .= "Rounded $cmd to $nt" if($nt ne $val);
|
||||||
$ret = "Rounded time to $nt" if($nt ne $val);
|
|
||||||
$val = $nt;
|
$val = $nt;
|
||||||
|
|
||||||
} elsif($cmd eq "mode") {
|
} elsif($cmd eq "mode") {
|
||||||
@ -237,6 +215,8 @@ FHT_Set($@)
|
|||||||
|
|
||||||
} else { # Holiday1, Holiday2
|
} else { # Holiday1, Holiday2
|
||||||
|
|
||||||
|
return "Invalid argument, must be between 1 and 255"
|
||||||
|
if($val !~ m/^\d+$/ || $val < 0 || $val > 255);
|
||||||
$arg .= sprintf("%02x", $val) if(defined($val));
|
$arg .= sprintf("%02x", $val) if(defined($val));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -302,7 +282,7 @@ FHT_Define($$)
|
|||||||
AssignIoPort($hash);
|
AssignIoPort($hash);
|
||||||
|
|
||||||
Log GetLogLevel($a[0],2),"Asking the FHT device $a[0]/$a[2] to send its data";
|
Log GetLogLevel($a[0],2),"Asking the FHT device $a[0]/$a[2] to send its data";
|
||||||
FHT_Set($hash, ($a[0], "init", "255", "refresh", "255"));
|
FHT_Set($hash, ($a[0], "report1", "255", "report2", "255"));
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -344,26 +324,27 @@ FHT_Parse($$)
|
|||||||
return $name;
|
return $name;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$val) {
|
my $scmd = substr($cde, 0, 2);
|
||||||
|
if(!$val || $scmd eq "65" || $scmd eq "66") {
|
||||||
# This is a confirmation message. We reformat it so that
|
# This is a confirmation message. We reformat it so that
|
||||||
# it looks like a real message, and let the rest parse it
|
# it looks like a real message, and let the rest parse it
|
||||||
Log 4, "FHT $name confirmation: $cde";
|
Log 4, "FHT $name confirmation: $cde";
|
||||||
$val = substr($cde, 2, 2);
|
$val = substr($cde, 2, 2);
|
||||||
$cde = substr($cde, 0, 2) . "0069";
|
$cde = $scmd . "0069";
|
||||||
$confirm = 1;
|
$confirm = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $type;
|
my $cmd;
|
||||||
foreach my $c (keys %codes) {
|
foreach my $c (keys %codes) {
|
||||||
if($cde =~ m/$c/) {
|
if($cde =~ m/$c/) {
|
||||||
$type = $codes{$c};
|
$cmd = $codes{$c};
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$val = hex($val);
|
$val = hex($val);
|
||||||
|
|
||||||
if(!$type) {
|
if(!$cmd) {
|
||||||
Log 4, "FHT $name (Unknown: $cde => $val)";
|
Log 4, "FHT $name (Unknown: $cde => $val)";
|
||||||
$def->{CHANGED}[0] = "unknown $cde: $val";
|
$def->{CHANGED}[0] = "unknown $cde: $val";
|
||||||
return $name;
|
return $name;
|
||||||
@ -372,49 +353,59 @@ FHT_Parse($$)
|
|||||||
my $tn = TimeNow();
|
my $tn = TimeNow();
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# Reformat the values so they are readable
|
# Reformat the values so they are readable.
|
||||||
|
# The first four are confirmation messages, so they must be converted to
|
||||||
|
# the same format as the input (for the softbuffer)
|
||||||
|
|
||||||
if($type eq "actuator") {
|
if($cmd =~ m/-from/ || $cmd =~ m/-to/) {
|
||||||
$val = sprintf("%02d%%", int(100*$val/255 + 0.5));
|
$val = sprintf("%02d:%02d", $val/6, ($val%6)*10);
|
||||||
} elsif($type eq "lime-protection") {
|
|
||||||
$val = sprintf("(actuator: %02d%%)", int(100*$val/255 + 0.5));
|
|
||||||
} elsif($cde ge "140069" && $cde le "2f0069") { # Time specs
|
|
||||||
Log 5, "FHT $name ($type: $val)";
|
|
||||||
return "" if($val == 144); # Empty, forget it
|
|
||||||
my $hour = $val / 6;
|
|
||||||
my $min = ($val % 6) * 10;
|
|
||||||
$val = sprintf("%02d:%02d", $hour, $min);
|
|
||||||
|
|
||||||
} elsif($type eq "mode") {
|
} elsif($cmd eq "mode") {
|
||||||
$val = $c2m{$val} if(defined($c2m{$val}));
|
$val = $c2m{$val} if(defined($c2m{$val}));
|
||||||
|
|
||||||
} elsif($type eq "measured-low") {
|
} elsif($cmd =~ m/.*-temp/) {
|
||||||
|
$val = sprintf("%.1f", $val / 2)
|
||||||
|
|
||||||
$def->{READINGS}{$type}{TIME} = $tn;
|
} elsif($cmd eq "lowtemp-offset") {
|
||||||
$def->{READINGS}{$type}{VAL} = $val;
|
$val = sprintf("%d.0", $val)
|
||||||
|
|
||||||
|
} elsif($cmd =~ m/^actuator/) {
|
||||||
|
|
||||||
|
my $sval = substr($cde, 4, 2);
|
||||||
|
my $fv = sprintf("%d%%", int(100*$val/255+0.5));
|
||||||
|
|
||||||
|
if($sval =~ m/.6/) { $val = "$fv" }
|
||||||
|
elsif($sval =~ m/.8/) { $val = "offset $fv" }
|
||||||
|
elsif($sval =~ m/.a/) { $val = "lime-protection" }
|
||||||
|
elsif($sval =~ m/.c/) { $val = "synctime" }
|
||||||
|
elsif($sval =~ m/.e/) { $val = "test" }
|
||||||
|
elsif($sval =~ m/.f/) { $val = "pair" }
|
||||||
|
else { $val = "Unknown: $sval = $fv" }
|
||||||
|
|
||||||
|
} elsif($cmd eq "lime-protection") {
|
||||||
|
$val = sprintf("(actuator: %02d%%)", int(100*$val/255 + 0.5));
|
||||||
|
|
||||||
|
} elsif($cmd eq "measured-low") {
|
||||||
|
$def->{READINGS}{$cmd}{TIME} = $tn;
|
||||||
|
$def->{READINGS}{$cmd}{VAL} = $val;
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
} elsif($type eq "measured-high") {
|
} elsif($cmd eq "measured-high") {
|
||||||
|
$def->{READINGS}{$cmd}{TIME} = $tn;
|
||||||
$def->{READINGS}{$type}{TIME} = $tn;
|
$def->{READINGS}{$cmd}{VAL} = $val;
|
||||||
$def->{READINGS}{$type}{VAL} = $val;
|
|
||||||
|
|
||||||
if(defined($def->{READINGS}{"measured-low"}{VAL})) {
|
if(defined($def->{READINGS}{"measured-low"}{VAL})) {
|
||||||
|
|
||||||
$val = $val*256 + $def->{READINGS}{"measured-low"}{VAL};
|
$val = $val*256 + $def->{READINGS}{"measured-low"}{VAL};
|
||||||
$val /= 10;
|
$val /= 10;
|
||||||
$val = sprintf("%.1f (Celsius)", $val);
|
$val = sprintf("%.1f (Celsius)", $val);
|
||||||
$type = "measured-temp"
|
$cmd = "measured-temp"
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
} elsif($type =~ m/.*-temp/) {
|
} elsif($cmd eq "warnings") {
|
||||||
$val = sprintf("%.1f (Celsius)", $val / 2)
|
|
||||||
|
|
||||||
} elsif($type eq "warnings") {
|
|
||||||
|
|
||||||
my $nVal;
|
my $nVal;
|
||||||
if($val & 1) { $nVal = "Battery low"; }
|
if($val & 1) { $nVal = "Battery low"; }
|
||||||
if($val & 2) { $nVal .= "; " if($nVal); $nVal .= "Temperature too low"; }
|
if($val & 2) { $nVal .= "; " if($nVal); $nVal .= "Temperature too low"; }
|
||||||
@ -422,17 +413,14 @@ FHT_Parse($$)
|
|||||||
if($val &16) { $nVal .= "; " if($nVal); $nVal .= "Fault on window sensor"; }
|
if($val &16) { $nVal .= "; " if($nVal); $nVal .= "Fault on window sensor"; }
|
||||||
$val = $nVal? $nVal : "none";
|
$val = $nVal? $nVal : "none";
|
||||||
|
|
||||||
} elsif($type eq "lowtemp-offset") {
|
|
||||||
$val = sprintf("%d.0 (Celsius)", $val)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$def->{READINGS}{$type}{TIME} = $tn;
|
$def->{READINGS}{$cmd}{TIME} = $tn;
|
||||||
$def->{READINGS}{$type}{VAL} = $val;
|
$def->{READINGS}{$cmd}{VAL} = $val;
|
||||||
$def->{CHANGED}[0] = "$type: $val";
|
$def->{CHANGED}[0] = "$cmd: $val";
|
||||||
$def->{STATE} = "$type: $val" if($type eq "measured-temp");
|
$def->{STATE} = "$cmd: $val" if($cmd eq "measured-temp");
|
||||||
|
|
||||||
Log 4, "FHT $name $type: $val";
|
Log 4, "FHT $name $cmd: $val";
|
||||||
|
|
||||||
################################
|
################################
|
||||||
# Softbuffer: delete confirmed commands
|
# Softbuffer: delete confirmed commands
|
||||||
@ -444,7 +432,7 @@ FHT_Parse($$)
|
|||||||
my $hcmd = $h->{CMD};
|
my $hcmd = $h->{CMD};
|
||||||
my $hname = $h->{HASH}->{NAME};
|
my $hname = $h->{HASH}->{NAME};
|
||||||
Log 4, "FHT softbuffer check: $hname / $hcmd";
|
Log 4, "FHT softbuffer check: $hname / $hcmd";
|
||||||
if($hname eq $name && $hcmd =~ m/^$type $val/) {
|
if($hname eq $name && $hcmd =~ m/^$cmd $val/) {
|
||||||
$found = $key;
|
$found = $key;
|
||||||
Log 4, "FHT softbuffer found";
|
Log 4, "FHT softbuffer found";
|
||||||
last;
|
last;
|
||||||
|
@ -223,15 +223,12 @@ split in multiple lines<br><br>
|
|||||||
<li>verbose<br>
|
<li>verbose<br>
|
||||||
Set the verbosity level. Possible values:
|
Set the verbosity level. Possible values:
|
||||||
<ul>
|
<ul>
|
||||||
<li>0 - it will only tell you when the server was started, or
|
<li>0 - server start/stop
|
||||||
stopped</li>
|
<li>1 - error messages or unknown packets
|
||||||
<li>1 - it logs all error messages or unknown packets</li>
|
<li>2 - major events/alarms.
|
||||||
<li>2 - it logs all signals received or sent in a "digested"
|
<li>3 - commands sent out will be logged.
|
||||||
format,</li>
|
<li>4 - you'll see whats received by the different devices.
|
||||||
<li>3 - it logs the signals for undefined devices,</li>
|
<li>5 - debugging.</li>
|
||||||
<li>4 - it logs the TCP/IP connections and the called programs with
|
|
||||||
parameters,</li>
|
|
||||||
<li>5 - is for debugging.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
Recommended level is 3 for normal use.
|
Recommended level is 3 for normal use.
|
||||||
</li>
|
</li>
|
||||||
@ -1392,7 +1389,6 @@ split in multiple lines<br><br>
|
|||||||
2006-11-02 06:03:37 desired-temp 21.0 (Celsius)
|
2006-11-02 06:03:37 desired-temp 21.0 (Celsius)
|
||||||
2006-11-02 04:13:31 fri-from1 06:00
|
2006-11-02 04:13:31 fri-from1 06:00
|
||||||
2006-11-02 04:13:31 fri-to1 23:50
|
2006-11-02 04:13:31 fri-to1 23:50
|
||||||
2006-11-02 04:11:30 init 255
|
|
||||||
2006-11-02 04:13:36 lowtemp-offset 2.0 (Celsius)
|
2006-11-02 04:13:36 lowtemp-offset 2.0 (Celsius)
|
||||||
2006-11-02 10:40:06 measured-high 0
|
2006-11-02 10:40:06 measured-high 0
|
||||||
2006-11-02 10:40:06 measured-low 211
|
2006-11-02 10:40:06 measured-low 211
|
||||||
@ -1637,8 +1633,7 @@ Send buffer:<br/> 2007-10-19 00:31:24 desired-temp 22.5
|
|||||||
<pre>
|
<pre>
|
||||||
desired-temp
|
desired-temp
|
||||||
day-temp night-temp
|
day-temp night-temp
|
||||||
refresh
|
report1 report2
|
||||||
init
|
|
||||||
mode
|
mode
|
||||||
holiday1 holiday2 # Not verified
|
holiday1 holiday2 # Not verified
|
||||||
manu-temp # No clue what it does.
|
manu-temp # No clue what it does.
|
||||||
@ -1664,23 +1659,31 @@ Send buffer:<br/> 2007-10-19 00:31:24 desired-temp 22.5
|
|||||||
Notes:
|
Notes:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Following events are reported (more or less regularly) from each FHT
|
<li>Following events are reported (more or less regularly) from each FHT
|
||||||
device: <code>measured-temp actuator lime-protection synctime
|
device: <code>measured-temp actuator actuator1...actuator8 warnings</code><br>
|
||||||
actuator1...actuator8 warnings</code><br>
|
|
||||||
You can use these strings for <a href="#notify">notify</a> or
|
You can use these strings for <a href="#notify">notify</a> or
|
||||||
<a href="#FileLog">FileLog</a> definitions.
|
<a href="#FileLog">FileLog</a> definitions.
|
||||||
<ul>
|
<ul>
|
||||||
<li>actuator is only sent, if it one of them is open
|
|
||||||
(normally not during the summer time).</li>
|
|
||||||
<li>actuator1..actuator8 is only sent, if the actuator offset
|
|
||||||
for this actuator is not 0</li>
|
|
||||||
<li>lime-protection is sent when the lime-protection is running.
|
|
||||||
</li>
|
|
||||||
<li>I don't know when the synctime is sent.
|
|
||||||
</li>
|
|
||||||
<li>warnings can contain following strings:
|
<li>warnings can contain following strings:
|
||||||
none, Battery low,Temperature too low, Window open,
|
none, Battery low,Temperature too low, Window open,
|
||||||
Fault on window sensor
|
Fault on window sensor
|
||||||
</li>
|
</li>
|
||||||
|
<li>actuator (without a suffix) stands for all actuators.
|
||||||
|
<li>actuator or actuator1..8 can take following values:
|
||||||
|
<ul>
|
||||||
|
<li><value>%<br>
|
||||||
|
This is the normal case, the actuator is instructed to open to this value.
|
||||||
|
<li>offset <value>%<br>
|
||||||
|
The actuator is running with this offset.
|
||||||
|
<li>lime-protection<br>
|
||||||
|
The actuator was instructed to execute the lime-protection procedure.
|
||||||
|
<li>synctime<br>
|
||||||
|
If you select Sond/Sync on the FHT80B, you'll see a count down.
|
||||||
|
<li>test<br>
|
||||||
|
The actuator was instructed by the FHT80b to emit a beep.
|
||||||
|
<li>pair<br>
|
||||||
|
The the FHT80b sent a "you-belong-to-me" to this actuator.
|
||||||
|
</ul>
|
||||||
|
Note:
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@ -1719,17 +1722,41 @@ Send buffer:<br/> 2007-10-19 00:31:24 desired-temp 22.5
|
|||||||
24:00 means off.
|
24:00 means off.
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<li>The <code>refresh</code> parameter should be 255. It requests
|
<li>As the FHT stops sending the values every 5-10
|
||||||
the FHT to resend all parameter values. As the FHT stops sending
|
days, it is adviseable to schedule following command regularly:<br>
|
||||||
the values every 5-10 days, it is adviseable to schedule following
|
<code>define fht_report at +*06:00:00
|
||||||
command regularly:<br>
|
set <name> report1 255 report2 255</code>
|
||||||
<code>define fht_refresh at +*06:00:00
|
<br><br>
|
||||||
set <name> refresh 255 init 255</code>
|
|
||||||
<br>
|
<li><code>report1</code> with parameter 255 requests all settings for
|
||||||
For the technically inclined: The argument 240 (0xf0) requests the
|
monday till sunday to be sent. The argument is a bitfield, to request
|
||||||
actuator, fri,sat,sun,measured-temp and warnings values, the argument
|
unique values add up the following:
|
||||||
15 (0x0f) the actuator,mon,tue,wed and thu values and all other
|
<ul>
|
||||||
arguments does not seem to work.
|
<li> 1: monday
|
||||||
|
<li> 2: tuesday
|
||||||
|
<li> 4: thursday
|
||||||
|
<li> 8: wednesday
|
||||||
|
<li>16: friday
|
||||||
|
<li>32: saturday
|
||||||
|
<li>64: sunday
|
||||||
|
</ul>
|
||||||
|
measured-temp and actuator is sent along if it is considered appropriate
|
||||||
|
by the FHT.
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<li><code>report2</code> 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:
|
||||||
|
<ul>
|
||||||
|
<li> 1: warnings
|
||||||
|
<li> 2: mode
|
||||||
|
<li> 4: day-temp, night-temp, windowopen-temp
|
||||||
|
<li>64: lowtemp-offset
|
||||||
|
</ul>
|
||||||
|
measured-temp and actuator is sent along if it is considered appropriate
|
||||||
|
by the FHT.
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<li><code>lowtemp-offset</code> needs a temperature as argument, valid
|
<li><code>lowtemp-offset</code> needs a temperature as argument, valid
|
||||||
@ -1749,7 +1776,8 @@ Send buffer:<br/> 2007-10-19 00:31:24 desired-temp 22.5
|
|||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<li>If a buffer is still in the softbuffer, it will be sent in the
|
<li>If a buffer is still in the softbuffer, it will be sent in the
|
||||||
following order:<br/> <code>desired-temp,mode,refresh,holiday1,holiday2,day-temp,night-temp, [all other commands]</code>
|
following order:<br/> <code>desired-temp,mode,report1,report2,
|
||||||
|
holiday1,holiday2,day-temp,night-temp, [all other commands]</code>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -19,7 +19,7 @@ my $__ME = "/fhem";
|
|||||||
|
|
||||||
###################
|
###################
|
||||||
# CSS
|
# CSS
|
||||||
my $FHEMWEB_css1 = "border: solid; border-width: thin; width: 100%";
|
my $FHEMWEB_css1 = "border: solid; border-width: thin; width: 100%; -moz-border-radius:8px; ";
|
||||||
my $FHEMWEB_css="
|
my $FHEMWEB_css="
|
||||||
body { color: black; background: #FFFFD7; }
|
body { color: black; background: #FFFFD7; }
|
||||||
table.room { $FHEMWEB_css1; background: #D7FFFF; }
|
table.room { $FHEMWEB_css1; background: #D7FFFF; }
|
||||||
|
Loading…
Reference in New Issue
Block a user