mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-14 21:49:12 +00:00
improve event fot TC/VD/LED16
git-svn-id: https://svn.fhem.de/fhem/trunk@2024 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
7f59b5f34b
commit
40d33549ff
@ -422,7 +422,7 @@ CUL_HM_Parse($$)
|
||||
}
|
||||
elsif($model eq "HM-CC-TC") { ####################################
|
||||
my ($sType,$chn) = ($1,$2) if($p =~ m/^(..)(..)/);
|
||||
if($cmd eq "8670" && $p =~ m/^(....)(..)/) {# weather event
|
||||
if($msgType eq "70" && $p =~ m/^(....)(..)/) {# weather event
|
||||
$chn = '01'; # fix definition
|
||||
my ( $t, $h) = (hex($1), hex($2));# temp is 15 bit signed
|
||||
$t = ($t & 0x3fff)/10*(($t & 0x4000)?-1:1);
|
||||
@ -430,22 +430,23 @@ CUL_HM_Parse($$)
|
||||
push @event, "measured-temp:$t";
|
||||
push @event, "humidity:$h";
|
||||
}
|
||||
elsif($cmd eq "A258" && $p =~ m/^(..)(..)/) {#climate event
|
||||
elsif($msgType eq "58" && $p =~ m/^(..)(..)/) {#climate event
|
||||
$chn = '02'; # fix definition
|
||||
my ( $d1, $vp) = # adjust_command[0..4] adj_data[0..250]
|
||||
( $1, hex($2));
|
||||
$vp = int($vp/2.56+0.5); # valve position in %
|
||||
push @event, "actuator:$vp %";
|
||||
#push @event, "actuator:$vp %";remove from TC
|
||||
|
||||
# Set the valve state too, without an extra trigger
|
||||
if($dhash) {
|
||||
DoTrigger($dname,'ValvePosition: changeTo '.$vp.'%');
|
||||
$dhash->{STATE} = "$vp %";
|
||||
$dhash->{READINGS}{state}{TIME} = $tn;
|
||||
$dhash->{READINGS}{state}{VAL} = "$vp %";
|
||||
}
|
||||
}
|
||||
# 0403 167DE9 01 05 05 16 0000 windowopen-temp chan 03, dev 167DE9 on slot 01
|
||||
elsif($cmd eq "A410" && $p =~ m/^0403(......)(..)0505(..)0000/) {
|
||||
elsif($msgType eq "10" && $p =~ m/^0403(......)(..)0505(..)0000/) {
|
||||
# change of chn 3(window) list 5 register 5 - a peer window changed!
|
||||
my ( $tdev, $tchan, $v1) = (($1), hex($2), hex($3));
|
||||
push @event, sprintf("windowopen-temp-%d: %.1f (sensor:%s)"
|
||||
@ -453,7 +454,7 @@ CUL_HM_Parse($$)
|
||||
}
|
||||
# idea: remember all possible 24 value-pairs per day and reconstruct list
|
||||
# everytime new values are set or received.
|
||||
elsif($cmd eq "A410" &&
|
||||
elsif($msgType eq "10" &&
|
||||
$p =~ m/^0402000000000(.)(..)(..)(..)(..)(..)(..)(..)(..)/) {
|
||||
# param list 5 or 6, 4 value pairs.
|
||||
my ($plist, $o1, $v1, $o2, $v2, $o3, $v3, $o4, $v4) =
|
||||
@ -504,7 +505,7 @@ CUL_HM_Parse($$)
|
||||
push @event, $msg; # generate one event per day entry
|
||||
}
|
||||
}
|
||||
elsif($cmd eq "A410" && $p =~ m/^04020000000005(..)(..)/) {
|
||||
elsif($msgType eq "10" && $p =~ m/^04020000000005(..)(..)/) {
|
||||
my ( $o1, $v1) = (hex($1),hex($2));# only parse list 5 for chn 2
|
||||
my $msg;
|
||||
my @days = ("Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri");
|
||||
@ -525,16 +526,16 @@ CUL_HM_Parse($$)
|
||||
push @event,'param-change: offset='.$o1.', value='.$v1;
|
||||
}
|
||||
}
|
||||
elsif($cmd eq "A001" && $p =~ m/^01080900(..)(..)/) {
|
||||
# channel is in sType for this message
|
||||
my ( $of, $vep) =
|
||||
(hex($1), hex($2));
|
||||
push @event, "ValveErrorPosition for $dname: $vep %";
|
||||
push @event, "ValveOffset for $dname: $of %";
|
||||
#set the condition in destination
|
||||
DoTrigger($dname,'ValveErrorPosition: changeTo '.$vep.'%');
|
||||
DoTrigger($dname,'ValveOffset: changeTo '.$of.'%');
|
||||
push @event,""; # nothing to report for TC
|
||||
elsif($msgType eq "01"){
|
||||
if($p =~ m/^010809(..)0A(..)/) { # TC set valve for VD => post events to VD
|
||||
my ( $of, $vep) = (hex($1), hex($2));
|
||||
DoTrigger($dname,'ValveErrorPosition: changeTo '.$vep.'%');
|
||||
DoTrigger($dname,'ValveOffset: changeTo '.$of.'%');
|
||||
push @event,""; # nothing to report for TC
|
||||
}
|
||||
elsif($p =~ m/^010[56]/){ # 'prepare to set' or 'end set'
|
||||
push @event,""; #
|
||||
}
|
||||
}
|
||||
# ($cmd eq "A112" && $p =~ m/^0202(..)$/)) { # Set desired temp
|
||||
elsif(($msgType eq '02' &&$sType eq '01')|| # ackStatus
|
||||
@ -753,7 +754,7 @@ CUL_HM_Parse($$)
|
||||
my $devState = $shash->{READINGS}{color}{VAL};
|
||||
$devState = "00000000" if (!$devState);
|
||||
if($parse eq "powerOn"){# reset LEDs after power on
|
||||
CUL_HM_PushCmdStack($shash,'++A011'.$id.$src.'%s%s8100'.$devState);
|
||||
CUL_HM_PushCmdStack($shash,'++A011'.$id.$src."8100".$devState);
|
||||
CUL_HM_ProcessCmdStack($shash);
|
||||
}
|
||||
else {# just update datafields in storage
|
||||
|
Loading…
x
Reference in New Issue
Block a user