From 47dfb2f14335fe40e93be24fc1630261e9a1145d Mon Sep 17 00:00:00 2001
From: rudolfkoenig <>
Date: Thu, 25 Jul 2013 07:35:49 +0000
Subject: [PATCH] sleep parameter quiet
git-svn-id: https://svn.fhem.de/fhem/trunk@3498 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/CHANGED | 1 +
fhem/docs/commandref_frame.html | 14 ++++++++---
fhem/docs/commandref_frame_DE.html | 39 ++++++++++++++++-------------
fhem/fhem.pl | 40 +++++++++++++++++-------------
4 files changed, 56 insertions(+), 38 deletions(-)
diff --git a/fhem/CHANGED b/fhem/CHANGED
index 4202eb57b..5ae4de9b3 100644
--- a/fhem/CHANGED
+++ b/fhem/CHANGED
@@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII
- SVN
+ - feature: optional sleep parameter quiet
- feature: additional buttons for use with 95_remotecontrol
- feature: new module 71_LISTENLIVE.pm for use with media players (betateilchen)
- feature: use xhr for colorupdates by colorpicker and rgb presets
diff --git a/fhem/docs/commandref_frame.html b/fhem/docs/commandref_frame.html
index 593ecebc4..f9d3a91aa 100644
--- a/fhem/docs/commandref_frame.html
+++ b/fhem/docs/commandref_frame.html
@@ -948,18 +948,24 @@ A line ending with \ will be concatenated with the next one, so long lines
sleep
- sleep <sec>
+ sleep <sec> [quiet]
- Sleep for a given amount, millisecond accuracy.
+ Sleep for a given amount, millisecond accuracy.
+ When called in a notify/at/etc, then nonempty return values of the following
+ commands is logged to the global logfile with loglevel 2.
+ If quiet is specified, then skip this logging.
Example:
sleep 0.5
- define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp toggle
+ define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp
+ toggle
+ define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get
+ Windsensor 1w_temp
Note: sleep followed by another command and issued in at/notify/etc is not
- blocking fhem.
+ blocking fhem
diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html
index 6e066b19c..e035b6a20 100644
--- a/fhem/docs/commandref_frame_DE.html
+++ b/fhem/docs/commandref_frame_DE.html
@@ -958,9 +958,9 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
shutdown [restart]
- Der Befehl fährt den Server herunter (nach dem sichern der state information
- ). Er triggert das global:SHUTDOWN Ereignis. Wenn der optionale
- Parameterv restart angegeben, versucht FHEM von selbst wieder zu starten.
+ Der Befehl fährt den Server herunter (nach dem sichern aller Gerätestati). Er triggert das global:SHUTDOWN
+ Ereignis. Mit der optionalen Parameter restart startet FHEM danach neu.
Beispiel:
@@ -976,10 +976,8 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
trigger <devspec> <state>
Triggert eine notify Definition.
- Lesen Sie bitte den Abschnitt Device specification für
- Details zu
- <devspec>.
-
+ Siehe Geräte-Spezifikation (devspec)
+ für Details zu <devspec>.
Beispiel:
@@ -990,18 +988,25 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
sleep
- sleep <sec>
+ sleep <sec> [quiet]
- Stoppt die Befehlsabarbeitung für die angegebene Anzahl von Millisekunden.
+ Wartet für die angegebene Anzahl von Millisekunden.
+ Falls sleep in at/notify/etc aufgerufen wurde, und die nachfolgenden
+ Kommandos einen nicht leeren Text zurückgeliefert haben, dann wird dieser
+ Text mit loglevel 2 protokolliert.
+ quiet vermeidet diese Protokollierung.
- Beispiel:
+ Beispiele:
sleep 0.5
- define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp toggle
+ define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp
+ toggle
+ define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get
+ Windsensor 1w_temp
- Bemerkung: sleep gefolgt von einem weiteren Befehl und angegeben in at/notify/etc
- blockiert die Abarbeitung von FHHM nicht.
+ Bemerkung: sleep gefolgt von weiteren Befehlen und aufgerufen in
+ at/notify/etc blockiert die Abarbeitung von FHEM nicht.
@@ -1222,10 +1227,10 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
- statefile
- Dieses Attribut legt den Namen der Datei fest, in die
- Statusinformationen und verschiedene at Information
- gespeichert werden bevor der Server heruntergefahren wird. Fall diese
- Datei nicht angegeben wird, so werden keinerlei Informationen gesichert.
+ Dieses Attribut legt den Namen der Datei fest, in die
+ Statusinformationen aller Geräte gespeichert werden bevor der
+ Server heruntergefahren wird. Falls diese Datei nicht angegeben wird, so
+ werden keinerlei Informationen gesichert.
diff --git a/fhem/fhem.pl b/fhem/fhem.pl
index 60a3b65a5..74fb0eeb8 100755
--- a/fhem/fhem.pl
+++ b/fhem/fhem.pl
@@ -265,7 +265,7 @@ $readingFnAttributes = "event-on-change-reading event-on-update-reading ".
"shutdown"=> { Fn=>"CommandShutdown",
Hlp=>"[restart],terminate the server" },
"sleep" => { Fn=>"CommandSleep",
- Hlp=>",sleep for sec, 3 decimal places" },
+ Hlp=>" [quiet],sleep for sec, 3 decimal places" },
"trigger" => { Fn=>"CommandTrigger",
Hlp=>" ,trigger notify command" },
"update" => {
@@ -2070,21 +2070,37 @@ CommandInform($$)
}
#####################################
+sub
+WakeUpFn($)
+{
+ my $h = shift;
+ $evalSpecials = $h->{evalSpecials};
+ my $ret = AnalyzeCommandChain(undef, $h->{cmd});
+ Log 2, "After sleep: $ret" if($ret && !$h->{quiet});
+}
+
+
sub
CommandSleep($$)
{
my ($cl, $param) = @_;
+ my ($sec, $quiet) = split(" ", $param);
- return "Cannot interpret $param as seconds" if($param !~ m/^[0-9\.]+$/);
- Log 4, "sleeping for $param";
+ return "Argument missing" if(!defined($sec));
+ return "Cannot interpret $sec as seconds" if($sec !~ m/^[0-9\.]+$/);
+ return "Second parameter must be quiet" if($quiet && $quiet ne "quiet");
- if(!$cl && @cmdList && $param && $init_done) {
- my %h = (cmd=>join(";", @cmdList), evalSpecials=>$evalSpecials);
- InternalTimer(gettimeofday()+$param, "WakeUpFn", \%h, 0);
+ Log 4, "sleeping for $sec";
+
+ if(!$cl && @cmdList && $sec && $init_done) {
+ my %h = (cmd => join(";", @cmdList),
+ evalSpecials => $evalSpecials,
+ quiet => $quiet);
+ InternalTimer(gettimeofday()+$sec, "WakeUpFn", \%h, 0);
@cmdList=();
} else {
- select(undef, undef, undef, $param);
+ select(undef, undef, undef, $sec);
}
return undef;
@@ -2113,16 +2129,6 @@ CommandVersion($$)
}
}
-sub
-WakeUpFn($)
-{
- my $h = shift;
- $evalSpecials = $h->{evalSpecials};
- my $ret = AnalyzeCommandChain(undef, $h->{cmd});
- Log 2, "After sleep: $ret" if($ret);
-}
-
-
#####################################
# Return the time to the next event (or undef if there is none)
# and call each function which was scheduled for this time