2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-04 05:16:45 +00:00

Twilight, Heating_Control, WeekdayTimer

Twilight,
- minor bugfix in logging 

Heating_Control, 
- set command for enabel/disable + new Reading disabled added

WeekdayTimer
- set command for enabel/disable + new Reading disabled added
 


git-svn-id: https://svn.fhem.de/fhem/trunk@5946 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
dietmar63 2014-05-23 17:41:49 +00:00
parent c2092f6c0d
commit 23b25c141c
3 changed files with 141 additions and 16 deletions

View File

@ -361,8 +361,10 @@ sub Twilight_fireEvent($)
my $nextEvent = $hash->{TW}{$sx}{NEXTE};
my $nextEventTime = "undefined";
$nextEventTime = strftime("%H:%M:%S",localtime($hash->{TW}{$nextEvent}{TIME})) if ($hash->{TW}{$nextEvent}{TIME} ne "nan");
Log3 $hash, 4, "[".$hash->{NAME}."] " . sprintf ("%-10s state=%-2s light=%-2s nextEvent=%-10s %-14s deg=%+.1f°",$sx, $state, $light, $nextEvent, strftime("%d.%m.%Y %H:%M:%S",localtime($hash->{TW}{$nextEvent}{TIME})), $deg);
if ($hash->{TW}{$nextEvent}{TIME} ne "nan") {
$nextEventTime = strftime("%H:%M:%S",localtime($hash->{TW}{$nextEvent}{TIME}));
Log3 $hash, 4, "[".$hash->{NAME}."] " . sprintf ("%-10s state=%-2s light=%-2s nextEvent=%-10s %-14s deg=%+.1f°",$sx, $state, $light, $nextEvent, strftime("%d.%m.%Y %H:%M:%S",localtime($hash->{TW}{$nextEvent}{TIME})), $deg);
}
my $eventTime = $hash->{TW}{$sx}{TIME};
my $now = time();

View File

@ -39,14 +39,34 @@ sub Heating_Control_Initialize($)
}
# Consumer
$hash->{SetFn} = "Heating_Control_Set";
$hash->{DefFn} = "Heating_Control_Define";
$hash->{UndefFn} = "Heating_Control_Undef";
$hash->{GetFn} = "Heating_Control_Get";
$hash->{AttrFn} = "Heating_Control_Attr";
$hash->{UpdFn} = "Heating_Control_Update";
$hash->{AttrList}= "disable:0,1 windowSensor ".
$readingFnAttributes;
}
################################################################################
sub Heating_Control_Set($@) {
my ($hash, @a) = @_;
return "no set value specified" if(int(@a) < 2);
return "Unknown argument $a[1], choose one of enable/disable refresh" if($a[1] eq "?");
my $name = shift @a;
my $v = join(" ", @a);
Log3 $hash, 3, "[$name] set $name $v";
if ($v eq "enable") {
fhem("attr $name disable 1");
} elsif ($v eq "disable") {
fhem("attr $name disable 1");
}
return undef;
}
################################################################################
sub Heating_Control_Get($@)
{
my ($hash, @a) = @_;
@ -461,7 +481,7 @@ sub Heating_Control_Device_Schalten($$$$) {
my $mod = "[".$hash->{NAME} ."] "; ###
#modifier des Zieldevices auswaehlen
my $setModifier = isHeizung($hash);
my $setModifier = Heating_Control_isHeizung($hash);
# Kommando aufbauen
if (defined $hash->{helper}{CONDITION}) {
@ -513,7 +533,17 @@ sub Heating_Control_Device_Schalten($$$$) {
}
}
########################################################################
sub isHeizung($) {
sub Heating_Control_Attr($$$) {
my ($cmd, $name, $attrName, $attrVal) = @_;
if( $attrName eq "disable" ) {
my $hash = $defs{$name};
readingsSingleUpdate ($hash, "disabled", $attrVal, 1);
}
return undef;
}
########################################################################
sub Heating_Control_isHeizung($) {
my ($hash) = @_;
my %setmodifiers =
@ -532,8 +562,8 @@ sub isHeizung($) {
"HM-CC-RT-DN" => 1 } );
my $dHash = $defs{$hash->{DEVICE}}; ###
my $dType = $dHash->{TYPE};
Log3 $hash, 5, "dType------------>$dType";
return "" if (!defined($dType));
Log3 $hash, 5, "dType------------>$dType";
my $setModifier = $setmodifiers{$dType};
$setModifier = "" if (!defined($setModifier));
@ -654,6 +684,49 @@ sub SortNumber {
by well-known Block with {}.<br>
Note: if a command is defined only this command are executed. In case of executing
a "set desired-temp" command, you must define it explicitly.<br>
<!-- -------------------------------------------------------------------------- -->
<!----------------------------------------------------------------------------- -->
<!-- -------------------------------------------------------------------------- -->
<li>in the command section you can access the event:
<ul>
<li>The variable $EVENT will contain the complete event, e.g.
<code>measured-temp: 21.7 (Celsius)</code></li>
<li>$EVTPART0,$EVTPART1,$EVTPART2,etc contain the space separated event
parts (e.g. <code>$EVTPART0="measured-temp:", $EVTPART1="21.7",
$EVTPART2="(Celsius)"</code>. This data is available as a local
variable in perl, as environment variable for shell scripts, and will
be textually replaced for FHEM commands.</li>
<li>$NAME contains the device to send the event, e.g.
<code>myFht</code></li>
</ul></li>
<li>Note: the following is deprecated and will be removed in a future
release. The described replacement is attempted if none of the above
variables ($NAME/$EVENT/etc) found in the command.
<ul>
<li>The character <code>%</code> will be replaced with the received
event, e.g. with <code>on</code> or <code>off</code> or
<code>measured-temp: 21.7 (Celsius)</code><br> It is advisable to put
the <code>%</code> into double quotes, else the shell may get a syntax
error.</li>
<li>The character <code>@</code> will be replaced with the device
name.</li>
<li>To use % or @ in the text itself, use the double mode (%% or
@@).</li>
<li>Instead of <code>%</code> and <code>@</code>, the parameters
<code>%EVENT</code> (same as <code>%</code>), <code>%NAME</code> (same
as <code>@</code>) and <code>%TYPE</code> (contains the device type,
e.g. <code>FHT</code>) can be used. The space separated event "parts"
are available as %EVTPART0, %EVTPART1, etc. A single <code>%</code>
looses its special meaning if any of these parameters appears in the
definition.</li>
</ul></li>
<!-- -------------------------------------------------------------------------- -->
<!----------------------------------------------------------------------------- -->
<!-- -------------------------------------------------------------------------- -->
The following parameter are replaced:<br>
<ol>
<li>@ => the device to switch</li>
@ -806,7 +879,22 @@ sub SortNumber {
</ul>
<a name="Heating_Controlset"></a>
<b>Set</b> <ul>N/A</ul><br>
<b>Set</b>
<code><b><font size="+1">set &lt;name&gt; &lt;value&gt;</font></b></code>
<br><br>
where <code>value</code> is one of:<br>
<pre>
<b>enable</b> # enables the Heating_Control
<b>disable</b> # disables the Heating_Control
</pre>
<b><font size="+1">Examples</font></b>:
<ul>
<code>set hc disable</code><br>
<code>set hc enable</code><br>
</ul>
</ul>
<a name="Heating_Controlget"></a>
<b>Get</b> <ul>N/A</ul><br>

View File

@ -25,8 +25,7 @@ package main;
use strict;
use warnings;
use POSIX;
#####################################
########################################################################
sub WeekdayTimer_Initialize($)
{
my ($hash) = @_;
@ -37,6 +36,8 @@ sub WeekdayTimer_Initialize($)
}
# Consumer
$hash->{SetFn} = "WeekdayTimer_Set";
$hash->{AttrFn} = "WeekdayTimer_Attr";
$hash->{DefFn} = "WeekdayTimer_Define";
$hash->{UndefFn} = "WeekdayTimer_Undef";
$hash->{GetFn} = "WeekdayTimer_Get";
@ -44,12 +45,21 @@ sub WeekdayTimer_Initialize($)
$hash->{AttrList}= "disable:0,1 ".
$readingFnAttributes;
}
################################################################################
sub WeekdayTimer_Set($@) {
my ($hash, @a) = @_;
return "no set value specified" if(int(@a) < 2);
return "Unknown argument $a[1], choose one of enable/disable refresh" if($a[1] eq "?");
Heating_Control_Set($@);
return undef;
}
########################################################################
sub WeekdayTimer_Get($@) {
return Heating_Control_Get($@);
}
########################################################################
sub WeekdayTimer_Define($$){
my ($hash, $def) = @_;
@ -57,22 +67,32 @@ sub WeekdayTimer_Define($$){
$hash->{helper}{DESIRED_TEMP_READING} = "";
return $ret;
}
########################################################################
sub WeekdayTimer_Undef($$){
my ($hash, $arg) = @_;
return Heating_Control_Undef($hash, $arg);
}
########################################################################
sub WeekdayTimer_UpdatePerlTime($) {
my ($hash) = @_;
Heating_Control_UpdatePerlTime($hash);
}
########################################################################
sub WeekdayTimer_Update($){
my ($hash) = @_;
return Heating_Control_Update($hash);
}
#
########################################################################
sub WeekdayTimer_Attr($$$) {
my ($cmd, $name, $attrName, $attrVal) = @_;
if( $attrName eq "disable" ) {
my $hash = $defs{$name};
readingsSingleUpdate ($hash, "disabled", $attrVal, 1);
}
return undef;
}
########################################################################
sub WeekdayTimer_SetAllParms() { # {WeekdayTimer_SetAllParms()}
foreach my $hc ( sort keys %{$modules{WeekdayTimer}{defptr}} ) {
@ -169,7 +189,22 @@ sub WeekdayTimer_SetAllParms() { # {WeekdayTimer_SetAllParms()}
</ul>
<a name="WeekdayTimerset"></a>
<b>Set</b> <ul>N/A</ul><br>
<b>Set</b>
<code><b><font size="+1">set &lt;name&gt; &lt;value&gt;</font></b></code>
<br><br>
where <code>value</code> is one of:<br>
<pre>
<b>disable</b> # disables the Weekday_Timer
<b>enable</b> # enables the Weekday_Timer
</pre>
<b><font size="+1">Examples</font></b>:
<ul>
<code>set wd disable</code><br>
<code>set wd enable</code><br>
</ul>
</ul>
<a name="WeekdayTimerget"></a>
<b>Get</b> <ul>N/A</ul><br>