mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-07 22:29:19 +00:00
improvements: disable state, state format, expanded documentation
git-svn-id: https://svn.fhem.de/fhem/trunk@4589 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
b5d3d13ca6
commit
edb65dbea0
@ -16,6 +16,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with fhem. If not, see <http://www.gnu.org/licenses/>.
|
# along with fhem. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
# $Id: 98_THRESHOLD.PM Damian $
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
@ -32,6 +33,7 @@ THRESHOLD_Initialize($)
|
|||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
$hash->{DefFn} = "THRESHOLD_Define";
|
$hash->{DefFn} = "THRESHOLD_Define";
|
||||||
$hash->{SetFn} = "THRESHOLD_Set";
|
$hash->{SetFn} = "THRESHOLD_Set";
|
||||||
|
$hash->{AttrFn} = "THRESHOLD_Attr";
|
||||||
$hash->{NotifyFn} = "THRESHOLD_Notify";
|
$hash->{NotifyFn} = "THRESHOLD_Notify";
|
||||||
$hash->{AttrList} = "disable:0,1 loglevel:0,1,2,3,4,5,6 state_format state_cmd1_gt state_cmd2_lt";
|
$hash->{AttrList} = "disable:0,1 loglevel:0,1,2,3,4,5,6 state_format state_cmd1_gt state_cmd2_lt";
|
||||||
}
|
}
|
||||||
@ -279,43 +281,17 @@ THRESHOLD_Set($@)
|
|||||||
|
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
readingsBulkUpdate ($hash, "mode", $mode);
|
readingsBulkUpdate ($hash, "mode", $mode);
|
||||||
readingsBulkUpdate ($hash, "state", $state_format) if ($state_format);
|
readingsBulkUpdate ($hash, "state", $state_format) if (!($state_format =~/^[ ]*$/));
|
||||||
readingsBulkUpdate ($hash, "threshold_min",$value-$hash->{hysteresis}+$offset);
|
readingsBulkUpdate ($hash, "threshold_min",$value-$hash->{hysteresis}+$offset);
|
||||||
readingsBulkUpdate ($hash, "threshold_max", $value+$offset);
|
readingsBulkUpdate ($hash, "threshold_max", $value+$offset);
|
||||||
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);
|
||||||
} elsif ($arg eq "deactivated" ) {
|
} elsif ($arg eq "deactivated" ) {
|
||||||
return "$pn: set deactivated, set desired value first" if ($desired_value eq "");
|
|
||||||
$ret=CommandAttr(undef, "$pn disable 1");
|
$ret=CommandAttr(undef, "$pn disable 1");
|
||||||
if (!$ret) {
|
|
||||||
readingsBeginUpdate ($hash);
|
|
||||||
$mode = "deactivated";
|
|
||||||
$state_format =~ s/\_m/$mode/g;
|
|
||||||
$state_format =~ s/\_dv//g;
|
|
||||||
$state_format =~ s/\_s1v//g;
|
|
||||||
$state_format =~ s/\_s2s//g;
|
|
||||||
$state_format =~ s/\_sc//g;
|
|
||||||
readingsBulkUpdate ($hash, "state", $state_format) if ($state_format);
|
|
||||||
readingsBulkUpdate ($hash, "mode", "deactivated");
|
|
||||||
readingsEndUpdate ($hash, 1);
|
|
||||||
}
|
|
||||||
} elsif ($arg eq "active" ) {
|
} elsif ($arg eq "active" ) {
|
||||||
return "$pn: set active, set desired value first" if ($desired_value eq "");
|
return "$pn: set active, set desired value first" if ($desired_value eq "");
|
||||||
$ret=CommandDeleteAttr(undef, "$pn disable");
|
$ret=CommandDeleteAttr(undef, "$pn disable");
|
||||||
if (!$ret) {
|
|
||||||
$mode="active";
|
|
||||||
readingsBeginUpdate ($hash);
|
|
||||||
$state_format =~ s/\_m/$mode/g;
|
|
||||||
$state_format =~ s/\_dv//g;
|
|
||||||
$state_format =~ s/\_s1v//g;
|
|
||||||
$state_format =~ s/\_s2s//g;
|
|
||||||
$state_format =~ s/\_sc//g;
|
|
||||||
readingsBulkUpdate ($hash, "mode", $mode);
|
|
||||||
readingsBulkUpdate ($hash, "state", $state_format) if ($state_format);
|
|
||||||
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
|
||||||
readingsEndUpdate ($hash, 1);
|
|
||||||
}
|
|
||||||
} elsif ($arg eq "external" ) {
|
} elsif ($arg eq "external" ) {
|
||||||
$ret=CommandDeleteAttr(undef, "$pn disable");
|
$ret=CommandDeleteAttr(undef, "$pn disable");
|
||||||
if (!$ret) {
|
if (!$ret) {
|
||||||
@ -328,7 +304,7 @@ THRESHOLD_Set($@)
|
|||||||
$state_format =~ s/\_s2s//g;
|
$state_format =~ s/\_s2s//g;
|
||||||
$state_format =~ s/\_sc//g;
|
$state_format =~ s/\_sc//g;
|
||||||
readingsBulkUpdate ($hash, "mode", $mode);
|
readingsBulkUpdate ($hash, "mode", $mode);
|
||||||
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);
|
||||||
}
|
}
|
||||||
@ -469,7 +445,7 @@ THRESHOLD_Notify($$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $cmd_now="";
|
my $cmd_now="";
|
||||||
if (($sensor_min ne "") and ($sensor_max ne ""))
|
if (($sensor_min ne "") and ($sensor_max ne "") and ($s_value ne ""))
|
||||||
{
|
{
|
||||||
my $cmd_default = $hash->{cmd_default};
|
my $cmd_default = $hash->{cmd_default};
|
||||||
if (!$hash->{operator}) {
|
if (!$hash->{operator}) {
|
||||||
@ -509,6 +485,36 @@ THRESHOLD_Notify($$)
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub
|
||||||
|
THRESHOLD_Attr(@)
|
||||||
|
{
|
||||||
|
my @a = @_;
|
||||||
|
my $hash = $defs{$a[1]};
|
||||||
|
|
||||||
|
if($a[0] eq "set" && $a[2] eq "disable")
|
||||||
|
{
|
||||||
|
if($a[3] eq "0") {
|
||||||
|
readingsBeginUpdate ($hash);
|
||||||
|
readingsBulkUpdate ($hash, "state", "initialized");
|
||||||
|
readingsBulkUpdate ($hash, "mode", "active");
|
||||||
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
|
readingsEndUpdate ($hash, 1);
|
||||||
|
} elsif($a[3] eq "1") {
|
||||||
|
readingsBeginUpdate ($hash);
|
||||||
|
readingsBulkUpdate ($hash, "state", "disabled");
|
||||||
|
readingsBulkUpdate ($hash, "mode", "deactivated");
|
||||||
|
readingsEndUpdate ($hash, 1);
|
||||||
|
}
|
||||||
|
} elsif($a[0] eq "del" && $a[2] eq "disable") {
|
||||||
|
readingsBeginUpdate ($hash);
|
||||||
|
readingsBulkUpdate ($hash, "state", "initialized");
|
||||||
|
readingsBulkUpdate ($hash, "mode", "active");
|
||||||
|
readingsBulkUpdate ($hash, "cmd","wait for next cmd");
|
||||||
|
readingsEndUpdate ($hash, 1);
|
||||||
|
}
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
THRESHOLD_set_state($)
|
THRESHOLD_set_state($)
|
||||||
{
|
{
|
||||||
@ -709,9 +715,9 @@ THRESHOLD_setValue($$)
|
|||||||
<br>
|
<br>
|
||||||
Example for heating with multiple window contacts:<br>
|
Example for heating with multiple window contacts:<br>
|
||||||
<br>
|
<br>
|
||||||
<code>define W_ALL structure <TYPE> W1 W2 W3 ...</code><br>
|
<code>define W_ALL structure W_type W1 W2 W3 ....</code><br>
|
||||||
<code>attr W_ALL clientstate_behavior relative</code><br>
|
<code>attr W_ALL clientstate_behavior relative</code><br>
|
||||||
<code>attr W_ALL clientstate_priority closed open</code><br>
|
<code>attr W_ALL clientstate_priority open closed</code><br>
|
||||||
<br>
|
<br>
|
||||||
then: <br>
|
then: <br>
|
||||||
<br>
|
<br>
|
||||||
@ -858,12 +864,11 @@ THRESHOLD_setValue($$)
|
|||||||
Nach der Definition eines THRESHOLD-Moduls und der Vorgabe eines Sollwertes beginnt bereits das definierte Modul mit der Steuerung. Im einfachsten Fall liest das Modul einen Sensor aus, der Werte als Dezimalzahlen liefert
|
Nach der Definition eines THRESHOLD-Moduls und der Vorgabe eines Sollwertes beginnt bereits das definierte Modul mit der Steuerung. Im einfachsten Fall liest das Modul einen Sensor aus, der Werte als Dezimalzahlen liefert
|
||||||
und schaltet beim Überschreiten einer definierten Schwellen-Obergrenze (Sollwert)
|
und schaltet beim Überschreiten einer definierten Schwellen-Obergrenze (Sollwert)
|
||||||
bzw. beim Unterschreiten einer Schwellen-Untergrenze einen Aktor oder führt beliebige FHEM/Perl-Befehle aus.
|
bzw. beim Unterschreiten einer Schwellen-Untergrenze einen Aktor oder führt beliebige FHEM/Perl-Befehle aus.
|
||||||
Typisches Anwendungsgebiet ist z. B. die Nachbildung eines Thermostats oder Hygrostats.<br>
|
Typisches Anwendungsgebiet ist z. B. die Nachbildung eines Thermostats oder Hygrostats - auch Zweipunktregler genannt.<br>
|
||||||
<br>
|
<br>
|
||||||
Mit Hilfe des Moduls, bzw. vieler solcher Module, lassen sich einfache oder auch komplexe Steuerungen für Heizung, Kühlung, Lüftung, Entfeuchtung, Beschattung oder z. B. einfache Benachrichtung
|
Mit Hilfe des Moduls, bzw. vieler solcher Module, lassen sich einfache oder auch komplexe Steuerungen für Heizung, Kühlung, Lüftung, Entfeuchtung, Beschattung oder z. B. einfache Benachrichtung
|
||||||
beim Über- oder Unterschreiten eines bestimmten Wertes realisieren. Dabei müssen keine If-Abfragen in Perl oder Notify-Definitionen vorgenommen werden.
|
beim Über- oder Unterschreiten eines bestimmten Wertes realisieren. Dabei müssen keine If-Abfragen in Perl oder Notify-Definitionen vorgenommen werden.
|
||||||
Das führt, nicht nur bei FHEM-Anfängern, zu schnell erstellten und übersichtlichen Steuerungen, ohne zwingend in die Perl-Materie einsteigen zu müssen.
|
Das führt, nicht nur bei FHEM-Anfängern, zu schnell erstellten und übersichtlichen Steuerungen, ohne zwingend in die Perl-Materie einsteigen zu müssen.<br>
|
||||||
Am Ende der Beschreibung befinden sich einige Anwendungsbeipiele des Moduls.<br>
|
|
||||||
<br>
|
<br>
|
||||||
Nach der Definition eines Moduls vom Typ THRESHOLD z. B. mit: <br>
|
Nach der Definition eines Moduls vom Typ THRESHOLD z. B. mit: <br>
|
||||||
<br>
|
<br>
|
||||||
@ -875,15 +880,176 @@ THRESHOLD_setValue($$)
|
|||||||
<br>
|
<br>
|
||||||
Das Modul beginnt mit der Steuerung erst dann, wenn ein Sollwert gesetzt wird!<br>
|
Das Modul beginnt mit der Steuerung erst dann, wenn ein Sollwert gesetzt wird!<br>
|
||||||
<br>
|
<br>
|
||||||
Alternativ kann die Vorgabe des Sollwertes von einem weiteren Sensor kommen. Damit kann eine Steuerung durch den Vergleich zweier Sensoren stattfinden.
|
Die Vorgabe des Sollwertes kann bereits bei der Definition des Moduls angegeben werden. Alternativ kann der Sollwert von einem weiteren Sensor kommen.
|
||||||
|
Damit kann eine Steuerung durch den Vergleich zweier Sensoren stattfinden.
|
||||||
Typisches Anwendungsbeispiel ist z. B. die Steuerung von Umwälz- oder Zirkulationspumpen.<br>
|
Typisches Anwendungsbeispiel ist z. B. die Steuerung von Umwälz- oder Zirkulationspumpen.<br>
|
||||||
<br>
|
<br>
|
||||||
Ebenso können beliebige Wandthermostate (z. B. HM, MAX, FHT) für die Vorgabe der Solltemperatur genutzt werden.<br>
|
Die Vorgabe der Solltemperatur kann auch von beliebigen Wandthermostaten (z. B. HM, MAX, FHT) genutzt werden.<br>
|
||||||
<br>
|
<br>
|
||||||
Optional kann das Schaltverhalten zusätzlich durch einen weiteren Sensor oder eine Sensorgruppe,
|
Das Schaltverhalten des THRESHOLD-Moduls kann zusätzlich durch einen weiteren Sensor oder eine Sensorgruppe,
|
||||||
definiert über structure (z. B. Fensterkontakte), über eine AND- bzw. OR-Verknüpfung beeinflusst werden.<br>
|
definiert über structure (z. B. Fensterkontakte), über eine AND- bzw. OR-Verknüpfung beeinflusst werden.<br>
|
||||||
<br>
|
<br>
|
||||||
Auch die Kombination mehrerer THRESHOLD-Module miteinander ist möglich, siehe Beispiele unten.<br>
|
Ebenfalls ist die Kombination mehrerer THRESHOLD-Module miteinander möglich.<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b><u>Beispiele für Heizungssteuerung:</u></b><br>
|
||||||
|
<br>
|
||||||
|
<b>Einfaches Heizungsthermostat:</b><br>
|
||||||
|
<br>
|
||||||
|
Es soll bis 20 Grad geheizt werden. Beim Unterschreiten der Untergrenze von 19=20-1 Grad (Sollwert-Hysterese) wird die Heizung wieder eingeschaltet.<br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_room THRESHOLD temp_room heating</code><br>
|
||||||
|
<code>set TH_room desired 20</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Zeitgesteuertes Heizen mit Hilfe des Heating_Control-Moduls:</b><br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_room THRESHOLD temp_room heating</code><br>
|
||||||
|
<code>define HC_room Heating_Control TH_room 06:00|22 22:00|18 set @ desired %</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Steuerung einer Heizung durch ein Wandthermostat mit Übernahme der Soll- und Ist-Temperatur vom Wandthermostat:</b><br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_Heizung THRESHOLD WT_ch1:measured-temp:1:WT_ch2:desired-temp Heizung</code><br>
|
||||||
|
<br>
|
||||||
|
Mit <code>set TH_Heizung desired 17</code> wird die Vorgabe vom Wandthermostat übersteuert bis <code>set TH_Heizung external</code> aufgerufen wird.<br>
|
||||||
|
<br>
|
||||||
|
<b>Heizung in Kombination mit einem Fensterkontakt mit Zuständen: open, closed:</b><br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_room THRESHOLD temp_room OR win_sens heating</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Heizung in Kombination mit mehreren Fensterkontakten:</b><br>
|
||||||
|
<br>
|
||||||
|
<code>define W_ALL structure W_type W1 W2 W3 ....</code><br>
|
||||||
|
<code>attr W_ALL clientstate_behavior relative</code><br>
|
||||||
|
<code>attr W_ALL clientstate_priority open closed</code><br>
|
||||||
|
<br>
|
||||||
|
<code>define thermostat THRESHOLD S1 OR W_ALL heating</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Kombination mehrerer THRESHOLD-Module miteinander:</b><br>
|
||||||
|
<br>
|
||||||
|
Es soll bis 21 Grad geheizt werden, aber nur, wenn die Außentemperatur unter 15 Grad ist:<br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_outdoor THRESHOLD outdoor:temperature:0:15</code><br>
|
||||||
|
<code>define TH_room THRESHOLD indoor OR TH_outdoor:state:off heating</code><br>
|
||||||
|
<code>set TH_room desired 21</code><br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b><u>Beispiele für Belüftung:</u></b><br>
|
||||||
|
<br>
|
||||||
|
<b>Einfache Belüftung anhand der Luftfeuchtigkeit:</b><br>
|
||||||
|
<br>
|
||||||
|
Es soll gelüftet werden, wenn die Feuchtigkeit im Zimmer über 70 % ist; bei 60 % geht der Lüfter wieder aus.<br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_hum THRESHOLD sens:humidity:10:70 Luefter|set @ on|set @ off|1</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Belüftung anhand des Taupunktes, abhängig von der Luftfeuchtigkeit innen:</b><br>
|
||||||
|
<br>
|
||||||
|
Es soll gelüftet werden, wenn die Luftfeuchtigkeit im Zimmer über 70 % ist und der Taupunkt innen höher ist als außen.<br>
|
||||||
|
<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 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>
|
||||||
|
<br>
|
||||||
|
<b>Belüftung in Kombination mit einem Lichtschalter mit Nachlaufsteuerung:</b><br>
|
||||||
|
<br>
|
||||||
|
Der Lüfter soll angehen, wenn das Licht mindestens 2 Minuten lang brennt oder die Luftfeuchtigkeit 65 % überschreitet,<br>
|
||||||
|
der Lüfter soll ausgehen, wenn die die Luftfeuchtigkeit unter 60 % fällt und das Licht mindestens 3 Minuten lang aus ist.<br>
|
||||||
|
<br>
|
||||||
|
<code>define ventilator_state dummy</code><br>
|
||||||
|
<code>define w_ventilator_state_off watchdog light_switch:off 00:03 light_switch:on set ventilator_state off;; trigger w_ventilator_state_off .</code><br>
|
||||||
|
<code>define w_ventilator_state_on watchdog light_switch:on 00:02 light_switch:off set ventilator_state on;; trigger w_ventilator_state_on .</code><br>
|
||||||
|
<code>define TH_ventilator THRESHOLD humsensor:humidity:5:65 OR ventilator_state:state:on ventilator|set @ on|set @ off|1</code><br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b><u>Beispiele für die Steuerung der Warmwasserzirkulation:</u></b><br>
|
||||||
|
<br>
|
||||||
|
<b>Zeitgesteuerte Warmwasserzirkulation:</b><br>
|
||||||
|
<br>
|
||||||
|
In der Hauptzeit soll die Wassertemperatur im Rücklauf mindestens 38 Grad betragen.<br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_circ TRHESHOLD return_w:temperature:0 circ_pump</code><br>
|
||||||
|
<code>define HC_circ Heating_Control TH_circ 12345|05:30|38 67|07:00|38 23:00|15 set @ desired %</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Alternative Steuerung mit Sollwert-Vorgabe durch einen weiteren Sensor des Warmwasserspeichers:</b><br>
|
||||||
|
<br>
|
||||||
|
Die Rücklauftemperatur soll 5 Grad (offset) unter der Warmwasserspeichertemperatur liegen und bis zu 4 Grad (Hysterese) schwanken dürfen.<br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_circ THRESHOLD return_w:temperature:4:water_storage:temperature:-5 circ_pump</code><br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b><u>Beispiele für Beschattung:</u></b><br>
|
||||||
|
<br>
|
||||||
|
<b>Beispiel für einfache Beschattung im Sommer:</b><br>
|
||||||
|
<br>
|
||||||
|
Zwischen 12:00 und 20:00 Uhr (potenzielle Sonnengefahr auf der Südseite) wird der Rolladen auf 30 % heruntergefahren,<br>
|
||||||
|
wenn die Raumtemperatur über 23 Grad ist und die Sonne scheint. Im Winter, wenn die Zimmertemperatur niedriger ist (< 23),<br>
|
||||||
|
will man von der Sonnenenergie profitieren und den Rollladen oben lassen.<br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_shutter_room THRESHOLD T_room AND sun:state:on shutter_room|set @ 30||2</code><br>
|
||||||
|
<code>define HC_R_Keller Heating_Control TH_shutter_room 12:00|23 20:00|30 set @ desired %</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Beispiel für Beschattung im Sommer mit Verzögerung und automatischem Hochfahren des Rollladens:</b><br>
|
||||||
|
<br>
|
||||||
|
Zusätzlich zum obigen Beispiel wird der Rollladen erst heruntergefahren, wenn die Sonne mindestens 15 Minuten scheint<br>
|
||||||
|
und wieder hochgefahren, wenn die Sonne mindesten 30 Minuten nicht mehr scheint.<br>
|
||||||
|
<br>
|
||||||
|
<code>define sun_state dummy</code><br>
|
||||||
|
<code>define w_sun_state_off watchdog sun:off 00:30 sun:on set sun_state off;; trigger w_sun_state_off .</code><br>
|
||||||
|
<code>define w_sun state_on watchdog sun:on 00:15 sun:off set sun_state on;; trigger w_sun_state_on .</code><br>
|
||||||
|
<code>define TH_shutter_room THRESHOLD T_room AND sun_state:state:on shutter_room|set @ 30|set @ 100|2</code><br>
|
||||||
|
<code>define HC_R_Keller Heating_Control TH_shutter_room 12:00|23 20:00|30 set @ desired %</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Beispiel für Beschattung mit Verzögerung mit Hilfe eines Helligkeitssensors:</b><br>
|
||||||
|
<br>
|
||||||
|
Der Rollladen soll herunterfahren, wenn der Helligkeitssensor mindesten 15 Minuten einen Schwellenwert von 10000 überschreitet<br>
|
||||||
|
und wieder hochfahren, wenn der Schwellenwert 10000 mindestens 30 Minuten lang unterschritten wird.<br>
|
||||||
|
<br>
|
||||||
|
<code>define sun dummy</code><br>
|
||||||
|
<code>define sun_state dummy</code><br>
|
||||||
|
<code>define TH_lightness THRESHOLD lightness_sensor:0:10000 sun||||on:off|_sc</code><br>
|
||||||
|
<code>define w_sun_state_off watchdog sun:off 00:30 sun:on set sun_state off;; trigger w_sun_state_off .</code><br>
|
||||||
|
<code>define w_sun state_on watchdog sun:on 00:15 sun:off set sun_state on;; trigger w_sun_state_on .</code><br>
|
||||||
|
<code>define TH_shutter_room THRESHOLD T_room AND sun_state:state:on shutter_room|set @ 30|set @ 100|2</code><br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b><u>Beispiele für die Ausführung beliebiger FHEM/Perl-Befehlsketten:</u></b><br>
|
||||||
|
<br>
|
||||||
|
<code>define thermostat THRESHOLD sensor |set Switch1 on;;set Switch2 on|set Switch1 off;;set Switch2 off|1</code><br>
|
||||||
|
<code>define thermostat THRESHOLD sensor alarm|{Log 2,"Wert überschritten"}|set @ off|</code><br>
|
||||||
|
<code>define thermostat THRESHOLD sensor ||{Log 2,"Wert unterschritten"}|</code><br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b><u>Einige weitere Bespiele für Entfeuchtung, Klimatisierung, Bewässerung:</u></b><br>
|
||||||
|
<br>
|
||||||
|
<code>define hygrostat THRESHOLD hym_sens:humidity dehydrator|set @ on|set @ off|1</code><br>
|
||||||
|
<code>define hygrostat THRESHOLD hym_sens:humidity AND Sensor2:state:closed dehydrator|set @ on|set @ off|1</code><br>
|
||||||
|
<code>define thermostat THRESHOLD temp_sens:temperature:1 aircon|set @ on|set @ off|1</code><br>
|
||||||
|
<code>define thermostat THRESHOLD temp_sens AND Sensor2:state:closed aircon|set @ on|set @ off|1</code><br>
|
||||||
|
<code>define hygrostat THRESHOLD hym_sens:humidity:20 watering|set @ off|set @ on|2</code><br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b><u>Beispiele für angepasste Statusanzeige des THRESHOLD-Moduls:</u></b><br>
|
||||||
|
<br>
|
||||||
|
<code>define thermostat THRESHOLD sensor aircon|set @ on|set @ off|2|on:off</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Beispiel für reine Zustandanzeige (z. B. für Zustandsauswertung in anderen Modulen) ohne Ausführung von Code:</b><br>
|
||||||
|
<br>
|
||||||
|
<code>define thermostat THRESHOLD sensor:temperature:0:30</code><br>
|
||||||
|
<br>
|
||||||
|
entspricht wegen Defaultwerte:<br>
|
||||||
|
<br>
|
||||||
|
<code>define thermostat THRESHOLD sensor:temperature:0:30||||off:on|_sc</code><br>
|
||||||
|
<br>
|
||||||
|
<b>Es soll der Modus (mode), Status (state_cmd), Sollvorgabewert (desired_value) und Wert des ersten Sensors (sensor_value) angezeigt werden:</b><br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_living_room THRESHOLD T_living_room heating|set @ off|set @ on|2|off:on|_m _sc _dv _s1v</code><br>
|
||||||
|
<br>
|
||||||
|
oder<br>
|
||||||
|
<br>
|
||||||
|
<code>define TH_living_room THRESHOLD T_living_room heating</code><br>
|
||||||
|
<code>attr TH_living_room state_cmd1_gt off</code><br>
|
||||||
|
<code>attr TH_living_room state_cmd2_lt on</code><br>
|
||||||
|
<code>attr TH_living_room state_format _m _sc _dv _s1v</code><br>
|
||||||
<br>
|
<br>
|
||||||
</ul>
|
</ul>
|
||||||
<a name="THRESHOLDdefine"></a>
|
<a name="THRESHOLDdefine"></a>
|
||||||
@ -984,103 +1150,6 @@ THRESHOLD_setValue($$)
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<b><u>Beispiele:</u></b><br>
|
|
||||||
<br>
|
|
||||||
Beispiel für ein einfaches Heizungsthermostat:<br>
|
|
||||||
<br>
|
|
||||||
Es soll bis 20 Grad geheizt werden. Beim Unterschreiten der Untergrenze von 19 Grad (Sollwert-Hysterese) wird die Heizung wieder eingeschaltet.<br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_room THRESHOLD temp_room heating</code><br>
|
|
||||||
<br>
|
|
||||||
<code>set TH_room desired 20</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiel für Heizung mit Fensterkontakt:<br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_room THRESHOLD temp_room OR win_sens heating</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiel für Heizung mit mehreren Fensterkontakten:<br>
|
|
||||||
<br>
|
|
||||||
<code>define W_ALL structure <TYPE-Deiner-Kontakte> W1 W2 W3 ....</code><br>
|
|
||||||
<code>attr W_ALL clientstate_behavior relative</code><br>
|
|
||||||
<code>attr W_ALL clientstate_priority closed open</code><br>
|
|
||||||
<br>
|
|
||||||
<code>define thermostat THRESHOLD S1 OR W_ALL heating</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Einige weitere Bespiele für Entfeuchtung, Klimatisierung, Bewässerung:<br>
|
|
||||||
<br>
|
|
||||||
<code>define hygrostat THRESHOLD hym_sens:humidity dehydrator|set @ on|set @ off|1</code><br>
|
|
||||||
<code>define hygrostat THRESHOLD hym_sens:humidity AND Sensor2:state:close dehydrator|set @ on|set @ off|1</code><br>
|
|
||||||
<code>define thermostat THRESHOLD temp_sens:temperature:1 aircon|set @ on|set @ off|1</code><br>
|
|
||||||
<code>define thermostat THRESHOLD temp_sens AND Sensor2:state:close aircon|set @ on|set @ off|1</code><br>
|
|
||||||
<code>define hygrostat THRESHOLD hym_sens:humidity:20 watering|set @ off|set @ on|2</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiele für die Ausführung beliebiger FHEM/Perl-Befehlsketten:<br>
|
|
||||||
<br>
|
|
||||||
<code>define thermostat THRESHOLD sensor |set Switch1 on;;set Switch2 on|set Switch1 off;;set Switch2 off|1</code><br>
|
|
||||||
<code>define thermostat THRESHOLD sensor alarm|{Log 2,"Wert überschritten"}|set @ on;;set Switch2 on</code><br>
|
|
||||||
<code>define thermostat THRESHOLD sensor ||{Log 2,"Wert unterschritten"}|</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiele für die Sollwert-Vorgabe durch einen weiteren Sensor:<br>
|
|
||||||
<br>
|
|
||||||
Warmwasserzirkulation: Die Rücklauftemperatur soll 5 Grad (offset) unter der Warmwasserspeichertemperatur liegen und bis zu 4 Grad (Hysterese) schwanken können.<br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_water_circulation THRESHOLD return_w:temperature:4:water_storage:temperature:-5 circualtion_pump</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Steuerung einer Heizung durch ein Wandthermostat mit Übernahme der Soll- und Ist-Temperatur vom Wandthermostat:<br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_Heizung THRESHOLD WT:measured-temp:1:WT:desired-temp Heizung</code><br>
|
|
||||||
<br>
|
|
||||||
Mit <code>set TH_Heizung desired 17</code> wird die Vorgabe vom Wandthermostat übersteuert bis <code>set TH_Heizung external</code> aufgerufen wird.<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiele mit angepasster Statusanzeige:<br>
|
|
||||||
<br>
|
|
||||||
<code>define thermostat THRESHOLD sensor aircon|set @ on|set @ off|2|on:off</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiel für reine Zustandanzeige (z. B. für Zustandsauswertung in anderen Modulen) ohne Ausführung von Code:<br>
|
|
||||||
<br>
|
|
||||||
<code>define thermostat THRESHOLD sensor:temperature:0:30</code><br>
|
|
||||||
<br>
|
|
||||||
entspricht wegen Defaultwerte:<br>
|
|
||||||
<br>
|
|
||||||
<code>define thermostat THRESHOLD sensor:temperature:0:30||||off:on|_sc</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiel für Kombination mehrerer THRESHOLD-Module miteinander:<br>
|
|
||||||
<br>
|
|
||||||
Es soll geheizt werden, wenn die Zimmertemperatur unter 21 Grad fällt und die Außentemperatur unter 15 Grad ist:<br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_outdoor THRESHOLD outdoor:temperature:0:15</code><br>
|
|
||||||
<code>define TH_room THRESHOLD indoor OR TH_outdoor:state:off heating</code><br>
|
|
||||||
<code>set TH_room desired 21</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiel für zeitabhängiges Heizen in Kombination mit Heating_Control-Modul:<br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_living_room THRESHOLD T_living_room heating</code><br>
|
|
||||||
<code>define HC_living_room Heating_Control TH_living_room 06:00|22 22:00|18 set @ desired %</code><br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Beispiele für Anpassung der Statusanzeige des Moduls:<br>
|
|
||||||
<br>
|
|
||||||
Anzeige von <mode> <state_cmd> <desired_value> <sensor_value><br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_living_room THRESHOLD T_living_room heating|set @ off|set @ on|2|off:on|_m _sc _dv _s1v</code><br>
|
|
||||||
<br>
|
|
||||||
oder<br>
|
|
||||||
<br>
|
|
||||||
<code>define TH_living_room THRESHOLD T_living_room heating</code><br>
|
|
||||||
<code>attr TH_living_room state_cmd1_gt off</code><br>
|
|
||||||
<code>attr TH_living_room state_cmd2_lt on</code><br>
|
|
||||||
<code>attr TH_living_room state_format _m _sc _dv _s1v</code><br>
|
|
||||||
<br>
|
|
||||||
</ul>
|
</ul>
|
||||||
<a name="THRESHOLDset"></a>
|
<a name="THRESHOLDset"></a>
|
||||||
<b>Set </b>
|
<b>Set </b>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user