From c27f453003da01cad0f3f4fb1e44876d24ab1f72 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Fri, 21 Mar 2014 15:05:07 +0000 Subject: [PATCH] STACKABLE_CC (busware device) support added git-svn-id: https://svn.fhem.de/fhem/trunk@5274 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/16_STACKABLE_CC.pm | 233 +++++++++++++++++++++++++++++++++++ fhem/MAINTAINER.txt | 1 + 3 files changed, 235 insertions(+) create mode 100755 fhem/FHEM/16_STACKABLE_CC.pm diff --git a/fhem/CHANGED b/fhem/CHANGED index e4801b587..eb930a1b7 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,6 +1,7 @@ # 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. - SVN + - feature: STACKABLE_CC (busware.de device for the RPi) added - feature: configdb export/import added for data security (betateilchen) - feature: new module 38_netatmo.pm added (justme1968) - change: 09_CUL_FHTTK.pm: clean up code to avoid "Use of uninitialized diff --git a/fhem/FHEM/16_STACKABLE_CC.pm b/fhem/FHEM/16_STACKABLE_CC.pm new file mode 100755 index 000000000..bf042896e --- /dev/null +++ b/fhem/FHEM/16_STACKABLE_CC.pm @@ -0,0 +1,233 @@ +############################################## +# $Id: 16_STACKABLE_CC.pm 3738 2013-08-18 14:13:59Z rudolfkoenig $ +package main; +use strict; +use warnings; + +##################################### +sub +STACKABLE_CC_Initialize($) +{ + my ($hash) = @_; + LoadModule("CUL"); + + $hash->{Match} = "^\\*"; + $hash->{DefFn} = "STACKABLE_CC_Define"; + $hash->{UndefFn} = "STACKABLE_CC_Undef"; + $hash->{ParseFn} = "STACKABLE_CC_Parse"; + $hash->{AttrFn} = "CUL_Attr"; + $hash->{AttrList} = "IODev ignore:0,1 ".$modules{CUL}{AttrList}; + + $hash->{WriteFn} = "STACKABLE_CC_Write"; + $hash->{GetFn} = "CUL_Get"; + $hash->{SetFn} = "CUL_Set"; + $hash->{AddPrefix} = "STACKABLE_CC_AddPrefix"; + $hash->{DelPrefix} = "STACKABLE_CC_DelPrefix"; + $hash->{noRawInform} = 1; # Our message was already sent as raw. + $hash->{noAutocreatedFilelog} = 1; +} + +##################################### +sub +STACKABLE_CC_Define($$) +{ + my ($hash, $def) = @_; + my @a = split("[ \t][ \t]*", $def); + + return "wrong syntax: define STACKABLE_CC [CUL|SCC]" + if(int(@a) != 3); + + my $io = $defs{$a[2]}; + return "$a[2] is not a CUL/STACKABLE_CC" + if(!$io || !($io->{TYPE} eq "CUL" || $io->{TYPE} eq "STACKABLE_CC")); + + return "$io->{NAME} has alread a stacked device: $io->{STACKED}" + if($io->{STACKED}); + + $io->{STACKED} = $hash->{NAME}; + $hash->{IODev} = $io; + delete($io->{".clientArray"}); # Force a recompute + $hash->{initString} = $io->{initString}; + $hash->{CMDS} = ""; + $hash->{Clients} = $io->{Clients}; + $hash->{MatchList} = $io->{MatchList}; + $hash->{StackLevel} = $io->{StackLevel} ? $io->{StackLevel}+1 : 1; + $hash->{STATE} = "Defined"; + + CUL_DoInit($hash); + + return undef; +} + +##################################### +sub +STACKABLE_CC_Write($$) +{ + my ($hash,$fn,$msg) = @_; + + ($fn, $msg) = CUL_WriteTranslate($hash, $fn, $msg); + return if(!defined($fn)); + IOWrite($hash, "", "*$fn$msg"); # No more translations +} + +##################################### +sub +STACKABLE_CC_Parse($$) +{ + my ($iohash,$msg) = @_; + + $msg =~ s/^.//; # Cut off prefix * + my $name = $iohash->{STACKED} ? $iohash->{STACKED} : ""; + + my $id = $iohash->{StackLevel} ? $iohash->{StackLevel}+1 : 1; + return "UNDEFINED STACKABLE_CC_$id STACKABLE_CC $iohash->{NAME}" + if(!$name); + + return "" if(IsIgnored($name)); + + CUL_Parse($defs{$name}, $iohash, $name, $msg); + return ""; +} + +sub +STACKABLE_CC_DelPrefix($) +{ + my ($hash, $msg) = @_; + $msg =~ s/^.//; + return $msg; +} + +sub +STACKABLE_CC_AddPrefix($$) +{ + my ($hash, $msg) = @_; + return "*$msg"; +} + +sub +STACKABLE_CC_Undef($$) +{ + my ($hash, $arg) = @_; + CUL_SimpleWrite($hash, "X00"); + delete $hash->{IODev}{STACKED}; + return undef; +} + +1; + + +=pod +=begin html + + +

STACKABLE_CC

+ + +=end html + +=begin html_DE + + +

STACKABLE_CC

+ +=end html_DE + +=cut diff --git a/fhem/MAINTAINER.txt b/fhem/MAINTAINER.txt index 1aab650b7..7d0895dbd 100644 --- a/fhem/MAINTAINER.txt +++ b/fhem/MAINTAINER.txt @@ -56,6 +56,7 @@ FHEM/14_CUL_TX.pm rudolfkoenig http://forum.fhem.de SlowRF FHEM/14_CUL_WS.pm rudolfkoenig http://forum.fhem.de SlowRF FHEM/15_CUL_EM.pm rudolfkoenig http://forum.fhem.de SlowRF FHEM/16_CUL_RFR.pm rudolfkoenig http://forum.fhem.de SlowRF +FHEM/16_STACKABLE_CC.pm rudolfkoenig http://forum.fhem.de SlowRF FHEM/17_EGPM2LAN.pm alexus http://forum.fhem.de Sonstiges FHEM/17_SIS_PMS.pm painseeker http://forum.fhem.de Sonstiges FHEM/18_CUL_HOERMANN.pm rudolfkoenig http://forum.fhem.de SlowRF