mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
CHANGED 09_CUL_FHTTK.pm to new reading update mechanism and added readingFnAttribute to module
git-svn-id: https://svn.fhem.de/fhem/trunk@4979 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
7ed2ba7916
commit
dae9430dfd
@ -1,6 +1,8 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
- SVN
|
- SVN
|
||||||
|
- change: 09_CUL_FHTTK.pm: added event-on...readings and event-min-interval
|
||||||
|
updated to reading update mechanism
|
||||||
- feature: Dashboard: Groupstitel now can show icons,
|
- feature: Dashboard: Groupstitel now can show icons,
|
||||||
Backbutton in Fullsize-Mode
|
Backbutton in Fullsize-Mode
|
||||||
- deleted: 51_BBB_WATCHDOG.pm - not really needed
|
- deleted: 51_BBB_WATCHDOG.pm - not really needed
|
||||||
@ -131,7 +133,7 @@
|
|||||||
- bugfix: PRESENCE: fixing not working re-initialization when
|
- bugfix: PRESENCE: fixing not working re-initialization when
|
||||||
disabled attribute is set to 0 in lan-bluetooth mode
|
disabled attribute is set to 0 in lan-bluetooth mode
|
||||||
- feature: LightScene: added attribute lightSceneParamsToSave for
|
- feature: LightScene: added attribute lightSceneParamsToSave for
|
||||||
device specific configuration of reading/command pairs
|
device specific configuration of </command pairs
|
||||||
used to save/restore device state
|
used to save/restore device state
|
||||||
- feature: cmdalias added
|
- feature: cmdalias added
|
||||||
- feature: rain Module by baumrasen
|
- feature: rain Module by baumrasen
|
||||||
|
@ -57,6 +57,8 @@
|
|||||||
# able for any alerting uses (unless a delay of said
|
# able for any alerting uses (unless a delay of said
|
||||||
# amount of time doesn't matter, of course ;)).
|
# amount of time doesn't matter, of course ;)).
|
||||||
#
|
#
|
||||||
|
# in charge of code: Matscher
|
||||||
|
#
|
||||||
# $Id$
|
# $Id$
|
||||||
##############################################
|
##############################################
|
||||||
package main;
|
package main;
|
||||||
@ -114,9 +116,11 @@ CUL_FHTTK_Initialize($)
|
|||||||
$hash->{UndefFn} = "CUL_FHTTK_Undef";
|
$hash->{UndefFn} = "CUL_FHTTK_Undef";
|
||||||
$hash->{ParseFn} = "CUL_FHTTK_Parse";
|
$hash->{ParseFn} = "CUL_FHTTK_Parse";
|
||||||
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 showtime:0,1 " .
|
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 showtime:0,1 " .
|
||||||
"model:FHT80TF loglevel:0,1,2,3,4,5,6";
|
"model:FHT80TF ".
|
||||||
|
$readingFnAttributes;
|
||||||
$hash->{AutoCreate}=
|
$hash->{AutoCreate}=
|
||||||
{ "CUL_FHTTK.*" => { GPLOT => "fht80tf:Window,", FILTER => "%NAME" } };
|
{ "CUL_FHTTK.*" => { GPLOT => "fht80tf:Window,", FILTER => "%NAME" } };
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -136,11 +140,9 @@ CUL_FHTTK_Define($$)
|
|||||||
return "wrong sensor specification $sensor, need a 6 digit hex number";
|
return "wrong sensor specification $sensor, need a 6 digit hex number";
|
||||||
}
|
}
|
||||||
|
|
||||||
# $hash->{SENSOR}= "$sensor";
|
|
||||||
$hash->{CODE} = $sensor;
|
$hash->{CODE} = $sensor;
|
||||||
$modules{CUL_FHTTK}{defptr}{$sensor} = $hash;
|
$modules{CUL_FHTTK}{defptr}{$sensor} = $hash;
|
||||||
# $defs{$hash}{READINGS}{PREV}{STATE}="00";
|
|
||||||
# $defs{$hash}{READINGS}{PREV}{TIMESTAMP} = localtime();
|
|
||||||
AssignIoPort($hash);
|
AssignIoPort($hash);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -165,19 +167,20 @@ CUL_FHTTK_Parse($$)
|
|||||||
my $sensor= lc(substr($msg, 1, 6));
|
my $sensor= lc(substr($msg, 1, 6));
|
||||||
my $def = $modules{CUL_FHTTK}{defptr}{$sensor};
|
my $def = $modules{CUL_FHTTK}{defptr}{$sensor};
|
||||||
if(!$def) {
|
if(!$def) {
|
||||||
Log 3, "FHTTK Unknown device $sensor, please define it";
|
Log3 $hash, 1, "FHTTK Unknown device $sensor, please define it";
|
||||||
return "UNDEFINED CUL_FHTTK_$sensor CUL_FHTTK $sensor";
|
return "UNDEFINED CUL_FHTTK_$sensor CUL_FHTTK $sensor";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $self = $def->{NAME};
|
my $name = $def->{NAME};
|
||||||
my $state = lc(substr($msg, 7, 2));
|
my $state = lc(substr($msg, 7, 2));
|
||||||
|
|
||||||
return "" if(IsIgnored($self));
|
return "" if(IsIgnored($name));
|
||||||
|
|
||||||
if(!defined($fhttfk_translatedcodes{$state})) {
|
if(!defined($fhttfk_translatedcodes{$state})) {
|
||||||
Log 3, sprintf("FHTTK $def Unknown state $state");
|
Log3 $name, 1, sprintf("FHTTK $def Unknown state $state");
|
||||||
$defs{$self}{READINGS}{"Unknown"}{VAL} = $state;
|
# Log 3, sprintf("FHTTK $def Unknown state $state");
|
||||||
$defs{$self}{READINGS}{"Unknown"}{TIME} = TimeNow();
|
$defs{$name}{READINGS}{"Unknown"}{VAL} = $state;
|
||||||
|
$defs{$name}{READINGS}{"Unknown"}{TIME} = TimeNow();
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,70 +188,72 @@ CUL_FHTTK_Parse($$)
|
|||||||
# PREVIOUS
|
# PREVIOUS
|
||||||
# FIXME: Message regarded as similar if last char is identical;
|
# FIXME: Message regarded as similar if last char is identical;
|
||||||
# sure that's always the differentiator? -wusel, 2009-11-09
|
# sure that's always the differentiator? -wusel, 2009-11-09
|
||||||
if(defined($defs{$self}{PREV}{TIMESTAMP})) {
|
if(defined($defs{$name}{PREV}{TIMESTAMP})) {
|
||||||
if($defs{$self}{PREV}{TIMESTAMP} > time()-5) {
|
if($defs{$name}{PREV}{TIMESTAMP} > time()-5) {
|
||||||
if(defined($defs{$self}{PREV}{STATE})) {
|
if(defined($defs{$name}{PREV}{STATE})) {
|
||||||
if($defs{$self}{PREV}{STATE} eq $state) {
|
if($defs{$name}{PREV}{STATE} eq $state) {
|
||||||
Log GetLogLevel($def->{NAME},4), sprintf("FHTTK skipping state $state as last similar telegram was received less than 5 (%d) secs ago", $defs{$self}{PREV}{STATE}, time()-$defs{$self}{PREV}{TIMESTAMP});
|
Log3 $name, 4, sprintf("FHTTK skipping state $state as last similar telegram was received less than 5 (%d) secs ago", $defs{$name}{PREV}{STATE}, time()-$defs{$name}{PREV}{TIMESTAMP});
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! defined($defs{$self}{READINGS}{"Previous"})) {
|
if (! defined($defs{$name}{READINGS}{"Previous"})) {
|
||||||
$defs{$self}{READINGS}{"Previous"}{VAL} = "";
|
$defs{$name}{READINGS}{"Previous"}{VAL} = "";
|
||||||
$defs{$self}{READINGS}{"Previous"}{TIME} = "";
|
$defs{$name}{READINGS}{"Previous"}{TIME} = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined($defs{$self}{PREV}{STATE}) && $defs{$self}{PREV}{STATE} ne $state) {
|
if (defined($defs{$name}{PREV}{STATE}) && $defs{$name}{PREV}{STATE} != $state) {
|
||||||
my $prevState = $defs{$self}{PREV}{STATE};
|
my $prevState = $defs{$name}{PREV}{STATE};
|
||||||
my ($windowReading,$windowState) = split(/:/, $fhttfk_codes{$prevState});
|
my ($windowReading,$windowState) = split(/:/, $fhttfk_codes{$prevState});
|
||||||
$defs{$self}{READINGS}{"Previous"}{VAL} = $windowState if defined($windowState) && $windowState ne "";
|
$defs{$name}{READINGS}{"Previous"}{VAL} = $windowState if defined($windowState) && $windowState ne "";
|
||||||
$defs{$self}{READINGS}{"Previous"}{TIME} = TimeNow();
|
$defs{$name}{READINGS}{"Previous"}{TIME} = TimeNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
$def->{PREVTIMESTAMP} = defined($defs{$self}{PREV}{TIMESTAMP})?$defs{$self}{PREV}{TIMESTAMP}:time();
|
$def->{PREVTIMESTAMP} = defined($defs{$name}{PREV}{TIMESTAMP})?$defs{$name}{PREV}{TIMESTAMP}:time();
|
||||||
$def->{PREVSTATE} = defined($def->{STATE})?$def->{STATE}:"Unknown";
|
$def->{PREVSTATE} = defined($def->{STATE})?$def->{STATE}:"Unknown";
|
||||||
$defs{$self}{PREV}{STATE}=$state;
|
$defs{$name}{PREV}{STATE}=$state;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# from here readings are effectively updated
|
||||||
|
#
|
||||||
|
readingsBeginUpdate($def);
|
||||||
|
|
||||||
#READINGS
|
#READINGS
|
||||||
my ($reading,$val) = split(/:/, $fhttfk_codes{$state});
|
my ($reading,$val) = split(/:/, $fhttfk_codes{$state});
|
||||||
$defs{$self}{READINGS}{$reading}{VAL} = $val;
|
readingsBulkUpdate($def, $reading, $val);
|
||||||
$defs{$self}{READINGS}{$reading}{TIME} = TimeNow();
|
|
||||||
$defs{$self}{PREV}{TIMESTAMP} = time();
|
$defs{$name}{PREV}{TIMESTAMP} = time();
|
||||||
# -wusel, 2009-11-09: According to http://fhz4linux.info/tiki-index.php?page=FHT+protocol,
|
# -wusel, 2009-11-09: According to http://fhz4linux.info/tiki-index.php?page=FHT+protocol,
|
||||||
# FHT80TF usually transmitts between 60 and 240 seconds. (255-256 sec in
|
# FHT80TF usually transmitts between 60 and 240 seconds. (255-256 sec in
|
||||||
# my experience ...) If we got no fresh data for over 5 minutes (300 sec),
|
# my experience ...) If we got no fresh data for over 5 minutes (300 sec),
|
||||||
# flag this.
|
# flag this.
|
||||||
if($defs{$self}{PREV}{TIMESTAMP}+720 < time()) {
|
if($defs{$name}{PREV}{TIMESTAMP}+720 < time()) {
|
||||||
$defs{$self}{READINGS}{"Reliability"}{VAL} = "dead";
|
readingsBulkUpdate($def, "Reliability", "dead");
|
||||||
$defs{$self}{READINGS}{"Reliability"}{TIME} = TimeNow();
|
} elsif($defs{$name}{PREV}{TIMESTAMP}+600 < time()) {
|
||||||
} elsif($defs{$self}{PREV}{TIMESTAMP}+600 < time()) {
|
readingsBulkUpdate($def, "Reliability", "low");
|
||||||
$defs{$self}{READINGS}{"Reliability"}{VAL} = "low";
|
} elsif($defs{$name}{PREV}{TIMESTAMP}+300 < time()) {
|
||||||
$defs{$self}{READINGS}{"Reliability"}{TIME} = TimeNow();
|
readingsBulkUpdate($def, "Reliability", "medium");
|
||||||
} elsif($defs{$self}{PREV}{TIMESTAMP}+300 < time()) {
|
|
||||||
$defs{$self}{READINGS}{"Reliability"}{VAL} = "medium";
|
|
||||||
$defs{$self}{READINGS}{"Reliability"}{TIME} = TimeNow();
|
|
||||||
} else {
|
} else {
|
||||||
$defs{$self}{READINGS}{"Reliability"}{VAL} = "ok";
|
readingsBulkUpdate($def, "Reliability", "ok");
|
||||||
$defs{$self}{READINGS}{"Reliability"}{TIME} = TimeNow();
|
|
||||||
}
|
}
|
||||||
# Flag the battery warning separately
|
# Flag the battery warning separately
|
||||||
if($state eq "11" || $state eq "12") {
|
if($state eq "11" || $state eq "12") {
|
||||||
$defs{$self}{READINGS}{"Battery"}{VAL} = "Low";
|
readingsBulkUpdate($def, "Battery", "Low");
|
||||||
$defs{$self}{READINGS}{"Battery"}{TIME} = TimeNow();
|
|
||||||
} else {
|
} else {
|
||||||
$defs{$self}{READINGS}{"Battery"}{VAL} = "ok";
|
readingsBulkUpdate($def, "Battery", "ok");
|
||||||
$defs{$self}{READINGS}{"Battery"}{TIME} = TimeNow();
|
|
||||||
}
|
}
|
||||||
#CHANGED
|
#CHANGED
|
||||||
$defs{$self}{CHANGED}[0] = $reading . ": " . $val;
|
readingsBulkUpdate($def, "state", $val);
|
||||||
$def->{STATE} = $val;
|
|
||||||
$def->{OPEN} = lc($val) eq "open" ? 1 : 0;
|
$def->{OPEN} = lc($val) eq "open" ? 1 : 0;
|
||||||
Log GetLogLevel($def->{NAME},4), "FHTTK Device $self ($reading: $val)";
|
Log3 $name, 4, "FHTTK Device $name ($reading: $val)";
|
||||||
|
|
||||||
|
#
|
||||||
|
# now we are done with updating readings
|
||||||
|
#
|
||||||
|
readingsEndUpdate($def, 1);
|
||||||
|
|
||||||
return $def->{NAME};
|
return $def->{NAME};
|
||||||
}
|
}
|
||||||
@ -309,6 +314,7 @@ CUL_FHTTK_Parse($$)
|
|||||||
<li><a href="#IODev">IODev</a></li><br>
|
<li><a href="#IODev">IODev</a></li><br>
|
||||||
<li><a href="#ignore">ignore</a></li><br>
|
<li><a href="#ignore">ignore</a></li><br>
|
||||||
<li><a href="#eventMap">eventMap</a></li><br>
|
<li><a href="#eventMap">eventMap</a></li><br>
|
||||||
|
<li><a href="#readingFnAttributes">readingFnAttributes</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ FHEM/01_FHEMWEB.pm rudolfkoenig http://forum.fhem.de Frontends
|
|||||||
FHEM/02_HTTPSRV.pm borisneubert http://forum.fhem.de Frontends
|
FHEM/02_HTTPSRV.pm borisneubert http://forum.fhem.de Frontends
|
||||||
FHEM/02_RSS.pm borisneubert http://forum.fhem.de Frontends
|
FHEM/02_RSS.pm borisneubert http://forum.fhem.de Frontends
|
||||||
FHEM/09_BS.pm borisneubert http://forum.fhem.de SlowRF
|
FHEM/09_BS.pm borisneubert http://forum.fhem.de SlowRF
|
||||||
FHEM/09_CUL_FHTTK.pm painseeker http://forum.fhem.de SlowRF
|
FHEM/09_CUL_FHTTK.pm matscher http://forum.fhem.de SlowRF
|
||||||
FHEM/09_USF1000.pm borisneubert http://forum.fhem.de SlowRF
|
FHEM/09_USF1000.pm borisneubert http://forum.fhem.de SlowRF
|
||||||
FHEM/10_CUL_HM.pm martinp876 http://forum.fhem.de HomeMatic
|
FHEM/10_CUL_HM.pm martinp876 http://forum.fhem.de HomeMatic
|
||||||
FHEM/10_CUL_IR.pm odroegehorn http://forum.fhem.de SlowRF
|
FHEM/10_CUL_IR.pm odroegehorn http://forum.fhem.de SlowRF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user