mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-21 07:56:03 +00:00
improved switching behavior
git-svn-id: https://svn.fhem.de/fhem/trunk@4740 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
48d9b1c48d
commit
0681438d89
@ -226,27 +226,29 @@ THRESHOLD_Define($$$)
|
|||||||
$hash->{cmd2_lt} = SemicolonEscape($cmd2_lt);
|
$hash->{cmd2_lt} = SemicolonEscape($cmd2_lt);
|
||||||
$hash->{cmd_default} = $cmd_default;
|
$hash->{cmd_default} = $cmd_default;
|
||||||
$hash->{STATE} = 'initialized';
|
$hash->{STATE} = 'initialized';
|
||||||
|
if (defined ($init_desired_value) or defined ($target_sensor)) {
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
|
if (defined ($init_desired_value))
|
||||||
if (defined ($init_desired_value))
|
{
|
||||||
{
|
my $mode="active";
|
||||||
my $mode="active";
|
readingsBulkUpdate ($hash, "threshold_min", $init_desired_value-$hysteresis+$offset);
|
||||||
readingsBulkUpdate ($hash, "threshold_min", $init_desired_value-$hysteresis+$offset);
|
readingsBulkUpdate ($hash, "threshold_max", $init_desired_value+$offset);
|
||||||
readingsBulkUpdate ($hash, "threshold_max", $init_desired_value+$offset);
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
readingsBulkUpdate ($hash, "desired_value", $init_desired_value);
|
||||||
readingsBulkUpdate ($hash, "desired_value", $init_desired_value);
|
readingsBulkUpdate ($hash, "mode", $mode);
|
||||||
readingsBulkUpdate ($hash, "mode", $mode);
|
}
|
||||||
|
if (defined ($target_sensor))
|
||||||
|
{
|
||||||
|
my $mode="external";
|
||||||
|
readingsBulkUpdate ($hash, "cmd", "wait for next cmd");
|
||||||
|
readingsBulkUpdate ($hash, "mode", "external");
|
||||||
|
}
|
||||||
|
readingsEndUpdate ($hash, 1);
|
||||||
|
# my $msg = THRESHOLD_Check($hash);
|
||||||
|
# if ($msg ne "") {
|
||||||
|
# return $msg;
|
||||||
|
# }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined ($target_sensor))
|
|
||||||
{
|
|
||||||
my $mode="external";
|
|
||||||
readingsBulkUpdate ($hash, "cmd", "wait for next cmd");
|
|
||||||
readingsBulkUpdate ($hash, "mode", "external");
|
|
||||||
}
|
|
||||||
readingsEndUpdate ($hash, 1);
|
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,6 +289,7 @@ THRESHOLD_Set($@)
|
|||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
readingsBulkUpdate ($hash, "desired_value", $value);
|
readingsBulkUpdate ($hash, "desired_value", $value);
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
return THRESHOLD_Check($hash);
|
||||||
} elsif ($arg eq "deactivated" ) {
|
} elsif ($arg eq "deactivated" ) {
|
||||||
$ret=CommandAttr(undef, "$pn disable 1");
|
$ret=CommandAttr(undef, "$pn disable 1");
|
||||||
} elsif ($arg eq "active" ) {
|
} elsif ($arg eq "active" ) {
|
||||||
@ -307,6 +310,7 @@ THRESHOLD_Set($@)
|
|||||||
readingsBulkUpdate ($hash, "state", $state_format) if (!($state_format =~/^[ ]*$/));
|
readingsBulkUpdate ($hash, "state", $state_format) if (!($state_format =~/^[ ]*$/));
|
||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
return THRESHOLD_Check($hash);
|
||||||
}
|
}
|
||||||
} elsif ($arg eq "hysteresis" ) {
|
} elsif ($arg eq "hysteresis" ) {
|
||||||
return "$pn: set hysteresis value:$value, hysteresis needs a numeric parameter" if (@a != 3 || $value !~ m/^[\d\.]*$/ );
|
return "$pn: set hysteresis value:$value, hysteresis needs a numeric parameter" if (@a != 3 || $value !~ m/^[\d\.]*$/ );
|
||||||
@ -317,6 +321,7 @@ THRESHOLD_Set($@)
|
|||||||
readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset);
|
readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset);
|
||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
return THRESHOLD_Check($hash);
|
||||||
}
|
}
|
||||||
} elsif ($arg eq "offset" ) {
|
} elsif ($arg eq "offset" ) {
|
||||||
return "$pn: set offset value:$value, offset needs a numeric parameter" if (@a != 3 || $value !~ m/^[-\d\.]*$/ );
|
return "$pn: set offset value:$value, offset needs a numeric parameter" if (@a != 3 || $value !~ m/^[-\d\.]*$/ );
|
||||||
@ -328,6 +333,7 @@ THRESHOLD_Set($@)
|
|||||||
readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset);
|
readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset);
|
||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
return THRESHOLD_Check($hash);
|
||||||
}
|
}
|
||||||
} elsif ($arg eq "cmd1_gt" ) {
|
} elsif ($arg eq "cmd1_gt" ) {
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
@ -352,18 +358,10 @@ THRESHOLD_Notify($$)
|
|||||||
my ($hash, $dev) = @_;
|
my ($hash, $dev) = @_;
|
||||||
my $pn = $hash->{NAME};
|
my $pn = $hash->{NAME};
|
||||||
return "" if($attr{$pn} && $attr{$pn}{disable});
|
return "" if($attr{$pn} && $attr{$pn}{disable});
|
||||||
|
|
||||||
my $sensor = $hash->{sensor};
|
|
||||||
my $reading = $hash->{sensor_reading};
|
|
||||||
my $target_sensor = $hash->{target_sensor};
|
|
||||||
my $target_reading = $hash->{target_reading};
|
|
||||||
my $sensor2 = $hash->{sensor2};
|
|
||||||
my $reading2 = $hash->{sensor2_reading};
|
|
||||||
my $s_value;
|
|
||||||
my $t_value;
|
|
||||||
my $sensor_max;
|
|
||||||
my $sensor_min;
|
|
||||||
my $name = $dev->{NAME};
|
my $name = $dev->{NAME};
|
||||||
|
my $sensor = $hash->{sensor};
|
||||||
|
my $target_sensor = $hash->{target_sensor};
|
||||||
|
my $sensor2 = $hash->{sensor2};
|
||||||
|
|
||||||
SELECT:{
|
SELECT:{
|
||||||
if (($name eq $sensor) and (ReadingsVal($pn,"desired_value","") ne "")) {last SELECT;}
|
if (($name eq $sensor) and (ReadingsVal($pn,"desired_value","") ne "")) {last SELECT;}
|
||||||
@ -377,6 +375,26 @@ THRESHOLD_Notify($$)
|
|||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
return THRESHOLD_Check($hash);
|
||||||
|
#return THRESHOLD_Check(@_);
|
||||||
|
}
|
||||||
|
|
||||||
|
##########################
|
||||||
|
sub
|
||||||
|
THRESHOLD_Check($)
|
||||||
|
{
|
||||||
|
my ($hash) = @_;
|
||||||
|
my $pn = $hash->{NAME};
|
||||||
|
my $sensor = $hash->{sensor};
|
||||||
|
my $reading = $hash->{sensor_reading};
|
||||||
|
my $target_sensor = $hash->{target_sensor};
|
||||||
|
my $target_reading = $hash->{target_reading};
|
||||||
|
my $sensor2 = $hash->{sensor2};
|
||||||
|
my $reading2 = $hash->{sensor2_reading};
|
||||||
|
my $s_value;
|
||||||
|
my $t_value;
|
||||||
|
my $sensor_max;
|
||||||
|
my $sensor_min;
|
||||||
|
|
||||||
if (!($defs{$sensor}{READINGS}{$reading})) {
|
if (!($defs{$sensor}{READINGS}{$reading})) {
|
||||||
my $msg = "$pn: no reading yet for $sensor $reading";
|
my $msg = "$pn: no reading yet for $sensor $reading";
|
||||||
@ -499,6 +517,7 @@ THRESHOLD_Attr(@)
|
|||||||
readingsBulkUpdate ($hash, "mode", "active");
|
readingsBulkUpdate ($hash, "mode", "active");
|
||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
return THRESHOLD_Check($hash);
|
||||||
} elsif($a[3] eq "1") {
|
} elsif($a[3] eq "1") {
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
readingsBulkUpdate ($hash, "state", "disabled");
|
readingsBulkUpdate ($hash, "state", "disabled");
|
||||||
@ -511,6 +530,7 @@ THRESHOLD_Attr(@)
|
|||||||
readingsBulkUpdate ($hash, "mode", "active");
|
readingsBulkUpdate ($hash, "mode", "active");
|
||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
return THRESHOLD_Check($hash);
|
||||||
}
|
}
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -939,7 +959,7 @@ THRESHOLD_setValue($$)
|
|||||||
<br>
|
<br>
|
||||||
Es soll gelüftet werden, wenn die Feuchtigkeit im Zimmer über 70 % ist; bei 60 % geht der Lüfter wieder aus.<br>
|
Es soll gelüftet werden, wenn die Feuchtigkeit im Zimmer über 70 % ist; bei 60 % geht der Lüfter wieder aus.<br>
|
||||||
<br>
|
<br>
|
||||||
<code>define TH_hum THRESHOLD sens:humidity:10:70 Luefter|set @ on|set @ off|1</code><br>
|
<code>define TH_hum THRESHOLD sens:humidity:10:70 ventilator|set @ on|set @ off|1</code><br>
|
||||||
<br>
|
<br>
|
||||||
<b>Belüftung anhand des Taupunktes, abhängig von der Luftfeuchtigkeit innen:</b><br>
|
<b>Belüftung anhand des Taupunktes, abhängig von der Luftfeuchtigkeit innen:</b><br>
|
||||||
<br>
|
<br>
|
||||||
@ -948,7 +968,7 @@ THRESHOLD_setValue($$)
|
|||||||
<code>define TH_hum THRESHOLD sens:humidity:10:70||||on:off|_sc</code><br>
|
<code>define TH_hum THRESHOLD sens:humidity:10:70||||on:off|_sc</code><br>
|
||||||
<code>define dewpoint dewpoint indoor</code><br>
|
<code>define dewpoint dewpoint indoor</code><br>
|
||||||
<code>define dewpoint dewpoint outdoor</code><br>
|
<code>define dewpoint dewpoint outdoor</code><br>
|
||||||
<code>define TH_room THRESHOLD indoor:dewpoint:0:outdoor:dewpoint AND TH_hum:state:on Luefer|set @ on|set @ off|2</code><br>
|
<code>define TH_room THRESHOLD indoor:dewpoint:0:outdoor:dewpoint AND TH_hum:state:on ventilator|set @ on|set @ off|2</code><br>
|
||||||
<br>
|
<br>
|
||||||
<b>Belüftung in Kombination mit einem Lichtschalter mit Nachlaufsteuerung:</b><br>
|
<b>Belüftung in Kombination mit einem Lichtschalter mit Nachlaufsteuerung:</b><br>
|
||||||
<br>
|
<br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user