DEFINED & INITIALIZED Macros

git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@502 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2009-12-09 13:15:16 +00:00
parent 8a5f41d2be
commit 67749c41f4
3 changed files with 31 additions and 2 deletions

View File

@@ -552,3 +552,4 @@
- bugfix: Path in the examples fixed (got corrupted)
- bugfix: PachLog fixes from Axel
- bugfix: HOWTO/Examples revisited for correctness
- bugfix: DEFINED & INITIALIZED triggers.

View File

@@ -3722,6 +3722,20 @@ A line ending with \ will be concatenated with the next one, so long lines
<li>Each undefined device (FS20, HMS, FHT) will be reported with the
device name "UNDEFINED". The % parameter will contain the type (FS20,
HMS100T, etc) and device number, separated by a space.</li>
<li>After defining a device, the event "DEFINED" will be triggered. This
can be used in the fhem.cfg to set some values of the device.</li>
<li>After initialization finished, the event "INITIALIZED" for the device
"global" will be triggered.</li>
<li>Notify can be used to store macros for manual execution. Use the <a
href="#trigger">trigger</a> command to execute the macro. E.g.<br>
<pre>
fhem> define MyMacro notify MyMacro { Log 1, "Hello"}
fhem> trigger MyMacro</pre>
</ul>
</ul>
<br>
@@ -4356,6 +4370,15 @@ isday</pre>
<a name="perl"></a>
<h3>Perl specials</h3>
<ul>
<li>To test perl oneliners, type them on the prompt by enclosing it in {}, e.g.<br>
<ul>
{ Log 1, "Hallo" }
</ul>
</li>
<li>To store some macros, see the Notes in the <a href="#notify">notify</a>
description.</li>
<li>To use fhem commands from the perl expression, use the function "fhem",
which takes a string argument, this string will be evaluated as a fhem
command chain.<br>

View File

@@ -48,6 +48,7 @@ sub CallFn(@);
sub CommandChain($$);
sub CheckDuplicate($$);
sub DoClose($);
sub DoTrigger($$);
sub Dispatch($$$);
sub FmtDateTime($);
sub FmtTime($);
@@ -155,7 +156,7 @@ my $nextat; # Time when next timer will be triggered.
my $intAtCnt=0;
my %duplicate; # Pool of received msg for multi-fhz/cul setups
my $duplidx=0; # helper for the above pool
my $cvsid = '$Id: fhem.pl,v 1.89 2009-12-01 22:41:17 rudolfkoenig Exp $';
my $cvsid = '$Id: fhem.pl,v 1.90 2009-12-09 13:15:16 rudolfkoenig Exp $';
my $namedef =
"where <name> is either:\n" .
"- a single device name\n" .
@@ -286,6 +287,7 @@ if($pfn) {
close(PID);
}
$init_done = 1;
DoTrigger("global", "INITIALIZED");
Log 0, "Server started (version $attr{global}{version}, pid $$)";
@@ -1041,6 +1043,7 @@ CommandDefine($$)
CommandAttr($cl, "$a[0] $da $defaultattr{$da}");
}
}
DoTrigger($a[0], "DEFINED");
return $ret;
}
@@ -1572,7 +1575,8 @@ CommandTrigger($$)
my ($cl, $param) = @_;
my ($dev, $state) = split(" ", $param, 2);
return "Usage: trigger <name> <state>\n$namedef" if(!$state);
return "Usage: trigger <name> <state>\n$namedef" if(!$dev);
$state = "" if(!$state);
my @rets;
foreach my $sdev (devspec2array($dev)) {
@@ -1873,6 +1877,7 @@ DoTrigger($$)
my $ret = "";
foreach my $n (sort keys %defs) {
next if(!defined($defs{$n})); # Was deleted in a previous notify
next if($n eq $dev && defined($ns) && $ns eq "DEFINED");
if(defined($modules{$defs{$n}{TYPE}})) {
if($modules{$defs{$n}{TYPE}}{NotifyFn}) {
Log 5, "$dev trigger: Checking $n for notify";