From 74039dbfb0e7175dcf1035d81da1fb2ab333a082 Mon Sep 17 00:00:00 2001 From: justme1968 Date: Tue, 10 Sep 2013 10:40:15 +0000 Subject: [PATCH] added forceOn attribute git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@3889 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/36_PCA301.pm | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/36_PCA301.pm b/fhem/FHEM/36_PCA301.pm index 8d7ce14c7..f6e4c7629 100644 --- a/fhem/FHEM/36_PCA301.pm +++ b/fhem/FHEM/36_PCA301.pm @@ -27,6 +27,7 @@ PCA301_Initialize($) $hash->{AttrFn} = "PCA301_Attr"; $hash->{AttrList} = "IODev" ." readonly:1" + ." forceOn:1" ." $readingFnAttributes"; } @@ -158,6 +159,13 @@ PCA301_Fingerprint($$) return ( "", $msg ); } +sub +PCA301_ForceOn($) +{ + my ($hash) = @_; + + PCA301_Send( $hash, 0x05, 0x01 ); +} sub PCA301_Parse($$) @@ -209,23 +217,30 @@ PCA301_Parse($$) $rhash->{PCA301_lastRcv} = TimeNow(); my $readonly = AttrVal($rname, "readonly", "0" ); + my $state = ""; if( $cmd eq 0x04 ) { - my $state = $data==0x00?"off":"on"; + $state = $data==0x00?"off":"on"; my $power = ($bytes[6]*256 + $bytes[7]) / 10.0; my $consumption = ($bytes[8]*256 + $bytes[9]) / 100.0; - $state = $power if( $readonly ); + my $state = $state; $state = $power if( $readonly ); readingsBeginUpdate($rhash); readingsBulkUpdate($rhash, "power", $power) if( $data != 0x00 ); readingsBulkUpdate($rhash, "consumption", $consumption) if( $data != 0x00 ); readingsBulkUpdate($rhash, "state", $state) if( Value($rname) ne $state ); readingsEndUpdate($rhash,1); } elsif( $cmd eq 0x05 ) { - my $state = $data==00?"off":"on"; + $state = $data==0x00?"off":"on"; readingsSingleUpdate($rhash, "state", $state, 1) } + if( AttrVal($rname, "forceOn", 0 ) == 1 + && $state eq "off" ) { + readingsSingleUpdate($rhash, "state", "set-forceOn", 1); + InternalTimer(gettimeofday()+3, "PCA301_ForceOn", $rhash, 0); + } + return @list; } sub @@ -312,6 +327,8 @@ PCA301_Attr(@)