From dd9367d95385404e839dd9956f2a7705de0378bb Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Tue, 23 Mar 2010 09:01:30 +0000 Subject: [PATCH] Hoermann module added git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@604 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- CHANGED | 1 + FHEM/00_CUL.pm | 8 +++-- FHEM/18_CUL_HOERMANN.pm | 62 ++++++++++++++++++++++++++++++++++ docs/commandref.html | 34 +++++++++++++++++++ webfrontend/pgm2/01_FHEMWEB.pm | 2 +- 5 files changed, 104 insertions(+), 3 deletions(-) create mode 100755 FHEM/18_CUL_HOERMANN.pm diff --git a/CHANGED b/CHANGED index ee17e566c..4c0f955c2 100644 --- a/CHANGED +++ b/CHANGED @@ -582,3 +582,4 @@ - bugfix: 99_SUNRISE_EL endless loop bug - feature: CUL: optional baudrate spec in definition - feature: CUL: sendpool attribute + - feature: CUL_HOERMANN module added diff --git a/FHEM/00_CUL.pm b/FHEM/00_CUL.pm index aec10a712..b237ba993 100755 --- a/FHEM/00_CUL.pm +++ b/FHEM/00_CUL.pm @@ -44,7 +44,7 @@ my %sets = ( "time" => "" ); -my @ampllist = (24, 27, 30, 33, 36, 38, 40, 42); +my @ampllist = (24, 27, 30, 33, 36, 38, 40, 42); # rAmpl(dB) sub CUL_Initialize($) @@ -55,7 +55,8 @@ CUL_Initialize($) $hash->{ReadFn} = "CUL_Read"; $hash->{WriteFn} = "CUL_Write"; $hash->{Clients} = - ":FS20:FHT:KS300:CUL_EM:CUL_WS:USF1000:HMS:CUL_FHTTK:CUL_RFR:FHT8V:"; + ":FS20:FHT:KS300:CUL_EM:CUL_WS:USF1000:HMS:CUL_FHTTK:CUL_RFR:FHT8V". + ":CUL_HOERMANN"; my %mc = ( "1:USF1000" => "^81..(04|0c)..0101a001a5ceaa00....", "2:FS20" => "^81..(04|0c)..0101a001", @@ -66,6 +67,7 @@ CUL_Initialize($) "7:HMS" => "^810e04....(1|5|9).a001", "8:CUL_FHTTK" => "^T........", "9:CUL_RFR" => "^[0-9A-F]{4}U.", + "A:CUL_HOERMANN"=> "^R..........", ); $hash->{MatchList} = \%mc; $hash->{ReadyFn} = "CUL_Ready"; @@ -811,6 +813,8 @@ CUL_Parse($$$$$) } elsif($fn eq "E" && $len >= 11) { # CUL_EM / Native ; + } elsif($fn eq "R" && $len >= 11) { # CUL_EM / Native + ; } else { Log GetLogLevel($name,2), "$name: unknown message $dmsg"; return; diff --git a/FHEM/18_CUL_HOERMANN.pm b/FHEM/18_CUL_HOERMANN.pm new file mode 100755 index 000000000..77594fdce --- /dev/null +++ b/FHEM/18_CUL_HOERMANN.pm @@ -0,0 +1,62 @@ +############################################## +package main; + +use strict; +use warnings; + +sub +CUL_HOERMANN_Initialize($) +{ + my ($hash) = @_; + + $hash->{Match} = "^R.........."; + $hash->{DefFn} = "CUL_HOERMANN_Define"; + $hash->{ParseFn} = "CUL_HOERMANN_Parse"; + $hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 " . + "showtime:1,0 loglevel:0,1,2,3,4,5,6"; + +} + +############################# +sub +CUL_HOERMANN_Define($$) +{ + my ($hash, $def) = @_; + my @a = split("[ \t][ \t]*", $def); + + my $u = "wrong syntax: define CUL_HOERMANN housecode " . + "addr [fg addr] [lm addr] [gm FF]"; + + return "wrong syntax: define CUL_HOERMANN 10-digit-hex-code" + if(int(@a) != 3 || $a[2] !~ m/^[a-f0-9]{10}$/i); + + $modules{CUL_HOERMANN}{defptr}{$a[2]} = $hash; + $hash->{STATE} = "Defined"; + return undef; +} + +sub +CUL_HOERMANN_Parse($$) +{ + my ($hash, $msg) = @_; + + # Msg format: RHHHHHHHH + my $cde = substr($msg, 1, 8); + my $def = $modules{CUL_HOERMANN}{defptr}{$cde}; + + if($def) { + my $name = $def->{NAME}; + $def->{CHANGED}[0] = "toggle"; + $def->{READINGS}{state}{TIME} = TimeNow(); + $def->{READINGS}{state}{VAL} = "toggle"; + Log GetLogLevel($name,2), "CUL_HOERMANN $name toggle"; + return $name; + + } else { + Log 3, "CUL_HOERMANN Unknown device $cde, please define it"; + return "UNDEFINED CUL_HOERMANN_$cde CUL_HOERMANN $cde"; + } + +} + +1; diff --git a/docs/commandref.html b/docs/commandref.html index 3cc5c392e..cf37ba42a 100644 --- a/docs/commandref.html +++ b/docs/commandref.html @@ -73,6 +73,7 @@ CUL   CUL_EM   CUL_FHTTK   + CUL_HOERMANN   CUL_RFR   CUL_WS   DS18S20   @@ -1888,6 +1889,39 @@ A line ending with \ will be concatenated with the next one, so long lines
+ +

CUL_HOERMANN

+
    + The CUL_HOERMANN module registers the 868MHz Hoermann Garage-Door-Opener + signals received by the CUL. Note: As the structure of this signal is + not understood, no checksum is verified, so it is likely to receive bogus + messages. +

    + + + Define +
      + define <name> CUL_HOERMANNEM <10-digit-hex-code> +
      +
    +
    + + + Set
      N/A

    + + + Get
      N/A

    + + Attributes + +
    +
+ +

CUL_RFR

    diff --git a/webfrontend/pgm2/01_FHEMWEB.pm b/webfrontend/pgm2/01_FHEMWEB.pm index 60bb95492..eeabe1217 100755 --- a/webfrontend/pgm2/01_FHEMWEB.pm +++ b/webfrontend/pgm2/01_FHEMWEB.pm @@ -467,7 +467,7 @@ FW_makeTable($$$$$$$$) my $row = 1; foreach my $v (sort keys %{$hash}) { my $r = ref($hash->{$v}); - next if($r && ($r ne "HASH" || !$hash->{$v}{VAL})); + next if($r && ($r ne "HASH" || !defined($hash->{$v}{VAL}))); pF " ", $row?"odd":"even"; $row = ($row+1)%2; if($makelink && $__reldoc) {