defattr changed to setdefaultattr

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@138 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2007-12-29 16:25:02 +00:00
parent a2203c3354
commit 83387c0f17
5 changed files with 29 additions and 25 deletions

View File

@ -370,6 +370,7 @@
- doc: linux.html: Introduction (Peter S.) - doc: linux.html: Introduction (Peter S.)
- feature: contrib/82_M232Voltage.pm (by Boris, 24.12) - feature: contrib/82_M232Voltage.pm (by Boris, 24.12)
- feature: delattr renamed to deleteattr (Rudi, 29.12) - feature: delattr renamed to deleteattr (Rudi, 29.12)
- feature: defattr renamed to setdefaultattr (Rudi, 29.12)
- feature: device spec (list/range/regexp) for most commands implemented - feature: device spec (list/range/regexp) for most commands implemented
- feature: %NAME, %EVENT, %TYPE parameters in notify definition - feature: %NAME, %EVENT, %TYPE parameters in notify definition

View File

@ -165,7 +165,9 @@
- linux.html: Introduction refinement. - linux.html: Introduction refinement.
- Rudi Sat Dec 29 16:27:14 MET 2007 - Rudi Sat Dec 29 16:27:14 MET 2007
- delattr renamed to deleteattr - delattr renamed to deleteattr, as del should complete to delete and not to
delattr
- defattr renamed to setdefaultattr (same as before for def)
- devicespec introduced: - devicespec introduced:
it may contain a list of devices, a range of devices, or multiple devices it may contain a list of devices, a range of devices, or multiple devices
identified by regexp. Following commands take a devicespec as argument: identified by regexp. Following commands take a devicespec as argument:

View File

@ -13,10 +13,9 @@
<a href="#intro">Introduction</a><br> <a href="#intro">Introduction</a><br>
<a href="#help">?,help</a><br> <a href="#help">?,help</a><br>
<a href="#attr">attr</a><br> <a href="#attr">attr</a><br>
<a href="#defattr">defattr</a><br>
<a href="#define">define</a><br> <a href="#define">define</a><br>
<a href="#deleteattr">deleteattr</a><br>
<a href="#delete">delete</a><br> <a href="#delete">delete</a><br>
<a href="#deleteattr">deleteattr</a><br>
<a href="#get">get</a><br> <a href="#get">get</a><br>
<a href="#include">include</a><br> <a href="#include">include</a><br>
<a href="#inform">inform</a><br> <a href="#inform">inform</a><br>
@ -27,11 +26,13 @@
<a href="#rereadcfg">rereadcfg</a><br> <a href="#rereadcfg">rereadcfg</a><br>
<a href="#save">save</a><br> <a href="#save">save</a><br>
<a href="#set">set</a><br> <a href="#set">set</a><br>
<a href="#setdefaultattr">setdefaultattr</a><br>
<a href="#setstate">setstate</a><br> <a href="#setstate">setstate</a><br>
<a href="#shutdown">shutdown</a><br> <a href="#shutdown">shutdown</a><br>
<a href="#trigger">trigger</a><br>
<a href="#sleep">sleep</a><br> <a href="#sleep">sleep</a><br>
<a href="#trigger">trigger</a><br>
<a href="#xmllist">xmllist</a><br> <a href="#xmllist">xmllist</a><br>
<a href="#devspec">Device specification</a><br> <a href="#devspec">Device specification</a><br>
<a href="#perl">Perl specials</a><br> <a href="#perl">Perl specials</a><br>
@ -477,10 +478,10 @@ split in multiple lines<br><br>
</ul> </ul>
</ul> </ul>
<a name="defattr"></a> <a name="setdefaultattr"></a>
<h3>defattr</h3> <h3>setdefaultattr</h3>
<ul> <ul>
<code>defattr [&lt;attrname&gt; [&lt;value&gt;]] </code><br> <code>setdefaultattr [&lt;attrname&gt; [&lt;value&gt;]] </code><br>
<br>Set the default attribute. Each device defined from now on will receive <br>Set the default attribute. Each device defined from now on will receive
this attribute (see the <a href="#attr">attr</a> entry for details on this attribute (see the <a href="#attr">attr</a> entry for details on
@ -491,12 +492,12 @@ split in multiple lines<br><br>
Example to set the attribute "room kitchen" and "loglevel 4" to Example to set the attribute "room kitchen" and "loglevel 4" to
each of the lamps: each of the lamps:
<ul> <ul>
<code>defattr room kitchen</code><br> <code>setdefaultattr room kitchen</code><br>
<code>defattr loglevel 4</code><br> <code>setdefaultattr loglevel 4</code><br>
<code>define lamp1 FS20 1234 11</code><br> <code>define lamp1 FS20 1234 11</code><br>
<code>define lamp2 FS20 1234 12</code><br> <code>define lamp2 FS20 1234 12</code><br>
<code>define lamp3 FS20 1234 13</code><br> <code>define lamp3 FS20 1234 13</code><br>
<code>defattr</code><br> <code>setdefaultattr</code><br>
</ul> </ul>
<br> <br>

28
fhem.pl
View File

@ -67,7 +67,7 @@ sub PrintHash($$);
sub devspec2array($); sub devspec2array($);
sub CommandAttr($$); sub CommandAttr($$);
sub CommandDefAttr($$); sub CommandDefaultAttr($$);
sub CommandDefine($$); sub CommandDefine($$);
sub CommandDeleteAttr($$); sub CommandDeleteAttr($$);
sub CommandDelete($$); sub CommandDelete($$);
@ -133,12 +133,12 @@ my $sig_term = 0; # if set to 1, terminate (saving the state)
my $modpath_set; # Check if modpath was used, and report if not. my $modpath_set; # Check if modpath was used, and report if not.
my $global_cl; # To use from perl snippets my $global_cl; # To use from perl snippets
my $devcount = 0; # To sort the devices my $devcount = 0; # To sort the devices
my %defattr; # Default attributes my %defaultattr; # Default attributes
my %intAt; # Internal at timer hash. my %intAt; # Internal at timer hash.
my $intAtCnt=0; my $intAtCnt=0;
my $reread_active = 0; my $reread_active = 0;
my $AttrList = "room comment"; my $AttrList = "room comment";
my $cvsid = '$Id: fhem.pl,v 1.33 2007-12-29 15:57:42 rudolfkoenig Exp $'; my $cvsid = '$Id: fhem.pl,v 1.34 2007-12-29 16:25:02 rudolfkoenig Exp $';
$init_done = 0; $init_done = 0;
@ -154,8 +154,6 @@ my %cmds = (
Hlp=>",get this help" }, Hlp=>",get this help" },
"attr" => { Fn=>"CommandAttr", "attr" => { Fn=>"CommandAttr",
Hlp=>"<devspec> <attrname> [<attrval>],set attribute for <devspec>" }, Hlp=>"<devspec> <attrname> [<attrval>],set attribute for <devspec>" },
"defattr" => { Fn=>"CommandDefAttr",
Hlp=>"<attrname> <attrvalue>,set attr for following definitions" },
"define" => { Fn=>"CommandDefine", "define" => { Fn=>"CommandDefine",
Hlp=>"<name> <type> <options>,define a device/at/notify entity" }, Hlp=>"<name> <type> <options>,define a device/at/notify entity" },
"deleteattr" => { Fn=>"CommandDeleteAttr", "deleteattr" => { Fn=>"CommandDeleteAttr",
@ -188,6 +186,8 @@ my %cmds = (
Hlp=>"<devspec> <type dependent>,transmit code for <devspec>" }, Hlp=>"<devspec> <type dependent>,transmit code for <devspec>" },
"setstate"=> { Fn=>"CommandSetstate", "setstate"=> { Fn=>"CommandSetstate",
Hlp=>"<devspec> <state>,set the state shown in the command list" }, Hlp=>"<devspec> <state>,set the state shown in the command list" },
"setdefaultattr" => { Fn=>"CommandDefaultAttr",
Hlp=>"<attrname> <attrvalue>,set attr for following definitions" },
"shutdown"=> { Fn=>"CommandShutdown", "shutdown"=> { Fn=>"CommandShutdown",
Hlp=>",terminate the server" }, Hlp=>",terminate the server" },
"sleep" => { Fn=>"CommandSleep", "sleep" => { Fn=>"CommandSleep",
@ -498,6 +498,8 @@ AnalyzeCommand($$)
my ($fn, $param) = split("[ \t][ \t]*", $cmd, 2); my ($fn, $param) = split("[ \t][ \t]*", $cmd, 2);
return if(!$fn); return if(!$fn);
$fn = "setdefaultattr" if($fn eq "defattr"); # Compatibility mode
############# #############
# Search for abbreviation # Search for abbreviation
if(!defined($cmds{$fn})) { if(!defined($cmds{$fn})) {
@ -777,7 +779,7 @@ CommandSave($$)
} }
foreach my $r (sort keys %rooms) { foreach my $r (sort keys %rooms) {
print SFH "\ndefattr" . ($r ne "~" ? " room $r" : "") . "\n"; print SFH "\nsetdefaultattr" . ($r ne "~" ? " room $r" : "") . "\n";
foreach my $d (sort keys %{$rooms{$r}} ) { foreach my $d (sort keys %{$rooms{$r}} ) {
next if($defs{$d}{VOLATILE}); next if($defs{$d}{VOLATILE});
if($defs{$d}{DEF}) { if($defs{$d}{DEF}) {
@ -794,7 +796,7 @@ CommandSave($$)
} }
} }
print SFH "defattr\n"; # Delete the last default attribute. print SFH "setdefaultattr\n"; # Delete the last default attribute.
print SFH "include $attr{global}{lastinclude}\n" print SFH "include $attr{global}{lastinclude}\n"
if($attr{global}{lastinclude}); if($attr{global}{lastinclude});
@ -957,8 +959,8 @@ CommandDefine($$)
if($ret) { if($ret) {
delete $defs{$a[0]} delete $defs{$a[0]}
} else { } else {
foreach my $da (sort keys (%defattr)) { # Default attributes foreach my $da (sort keys (%defaultattr)) { # Default attributes
CommandAttr($cl, "$a[0] $da $defattr{$da}"); CommandAttr($cl, "$a[0] $da $defaultattr{$da}");
} }
} }
return $ret; return $ret;
@ -1423,17 +1425,17 @@ CommandAttr($$)
##################################### #####################################
# Default Attr # Default Attr
sub sub
CommandDefAttr($$) CommandDefaultAttr($$)
{ {
my ($cl, $param) = @_; my ($cl, $param) = @_;
my @a = split(" ", $param, 2); my @a = split(" ", $param, 2);
if(int(@a) == 0) { if(int(@a) == 0) {
%defattr = (); %defaultattr = ();
} elsif(int(@a) == 1) { } elsif(int(@a) == 1) {
$defattr{$a[0]} = 1; $defaultattr{$a[0]} = 1;
} else { } else {
$defattr{$a[0]} = $a[1]; $defaultattr{$a[0]} = $a[1];
} }
return undef; return undef;
} }

View File

@ -8,7 +8,6 @@ attr global verbose 3
define FHZ FHZ none define FHZ FHZ none
defattr
define btn4 FS20 1234 03 define btn4 FS20 1234 03
define cellar FS20 1234 13 define cellar FS20 1234 13
define fl FHT 1236 define fl FHT 1236
@ -19,4 +18,3 @@ define tf1 HMS 1237
define window.lamp FS20 1234 02 define window.lamp FS20 1234 02
define wz FHT 1235 define wz FHT 1235
define x SCIVT none define x SCIVT none
defattr