mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
98_Heating_Control.pm some improvements in the dokumentation because of german umlaute and changed the structure dealing with the unit of Celsius.
git-svn-id: https://svn.fhem.de/fhem/trunk@2753 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
a64c6d2c28
commit
c35ebdb81e
@ -95,13 +95,13 @@ Heating_Control_Define($$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(my $i=0; $i<@a; $i++) {
|
for(my $i=0; $i<@a; $i++) {
|
||||||
#prüfen auf Angabe eines Schaltpunktes
|
#prüfen auf Angabe eines Schaltpunktes
|
||||||
my @t = split(/\|/, $a[$i]);
|
my @t = split(/\|/, $a[$i]);
|
||||||
my $anzahl = @t;
|
my $anzahl = @t;
|
||||||
if ( $anzahl ~~ [2,3]) {
|
if ( $anzahl ~~ [2,3]) {
|
||||||
push(@switchingtimes, $a[$i]);
|
push(@switchingtimes, $a[$i]);
|
||||||
} else {
|
} else {
|
||||||
#der Rest ist das auzuführende Kommando/condition
|
#der Rest ist das auzuführende Kommando/condition
|
||||||
$conditionOrCommand = trim(join(" ", @a[$i..@a-1]));
|
$conditionOrCommand = trim(join(" ", @a[$i..@a-1]));
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
@ -145,13 +145,13 @@ Heating_Control_Define($$)
|
|||||||
$dayNumber{$day} = $idx; $idx++;
|
$dayNumber{$day} = $idx; $idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
#Aufzählung 1234 ...
|
#Aufzählung 1234 ...
|
||||||
if ( $daylist =~ m/^(\d){0,7}$/g) {
|
if ( $daylist =~ m/^(\d){0,7}$/g) {
|
||||||
|
|
||||||
@days = split("", $daylist);
|
@days = split("", $daylist);
|
||||||
@hdays{@days}=1;
|
@hdays{@days}=1;
|
||||||
|
|
||||||
# Aufzählung Sa,So,... | Mo-Di,Do,Fr-Mo
|
# Aufzählung Sa,So,... | Mo-Di,Do,Fr-Mo
|
||||||
} elsif ($daylist =~ m/^($daysRegExp(,|-|$)){0,7}$/g ) {
|
} elsif ($daylist =~ m/^($daysRegExp(,|-|$)){0,7}$/g ) {
|
||||||
|
|
||||||
my $oldDay, my $oldDel;
|
my $oldDay, my $oldDel;
|
||||||
@ -193,21 +193,25 @@ Heating_Control_Define($$)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Profile sortiert aufbauen
|
#desired-temp des Zieldevices auswählen
|
||||||
for (my $d=1; $d<=7; $d++) {
|
|
||||||
foreach my $st (sort (keys %{ $hash->{helper}{SWITCHINGTIME}{$d} })) {
|
|
||||||
my $temp = $hash->{helper}{SWITCHINGTIME}{$d}{$st};
|
|
||||||
$hash->{"PROFILE ".($d).": ".$Wochentage[$d-1]} .= sprintf("%s: %.1f°C, ", $st, $temp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#desired-temp des Zieldevices auswählen
|
|
||||||
if($defs{$device}{TYPE} eq "MAX") {
|
if($defs{$device}{TYPE} eq "MAX") {
|
||||||
$hash->{helper}{DESIRED_TEMP_READING} = "desiredTemperature"
|
$hash->{helper}{DESIRED_TEMP_READING} = "desiredTemperature"
|
||||||
} else {
|
} else {
|
||||||
$hash->{helper}{DESIRED_TEMP_READING} = "desired-temp";
|
$hash->{helper}{DESIRED_TEMP_READING} = "desired-temp";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$hash->{helper}{UNIT} = "°C";
|
||||||
|
|
||||||
|
my $unit = $hash->{helper}{UNIT};
|
||||||
|
|
||||||
|
# Profile sortiert aufbauen
|
||||||
|
for (my $d=1; $d<=7; $d++) {
|
||||||
|
foreach my $st (sort (keys %{ $hash->{helper}{SWITCHINGTIME}{$d} })) {
|
||||||
|
my $temp = $hash->{helper}{SWITCHINGTIME}{$d}{$st};
|
||||||
|
$hash->{"PROFILE ".($d).": ".$Wochentage[$d-1]} .= sprintf("%s: %.1f%s, ", $st, $temp, $unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $now = time();
|
my $now = time();
|
||||||
InternalTimer ($now+30, "Heating_Control_Update", $hash, 0);
|
InternalTimer ($now+30, "Heating_Control_Update", $hash, 0);
|
||||||
|
|
||||||
@ -288,6 +292,7 @@ Heating_Control_Update($)
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
my $unit = $hash->{helper}{UNIT};
|
||||||
my $command;
|
my $command;
|
||||||
|
|
||||||
Log $loglevel, "NowSwitch: ".strftime('%d.%m.%Y %H:%M:%S',localtime($nowSwitch))." ; AktDesiredTemp: $AktDesiredTemp ; newDesTemperature: $newDesTemperature";
|
Log $loglevel, "NowSwitch: ".strftime('%d.%m.%Y %H:%M:%S',localtime($nowSwitch))." ; AktDesiredTemp: $AktDesiredTemp ; newDesTemperature: $newDesTemperature";
|
||||||
@ -315,8 +320,8 @@ Heating_Control_Update($)
|
|||||||
InternalTimer($nextSwitch, "Heating_Control_Update", $hash, 0);
|
InternalTimer($nextSwitch, "Heating_Control_Update", $hash, 0);
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
readingsBulkUpdate ($hash, "nextUpdate", strftime("%d.%m.%Y %H:%M:%S",localtime($nextSwitch)));
|
readingsBulkUpdate ($hash, "nextUpdate", strftime("%d.%m.%Y %H:%M:%S",localtime($nextSwitch)));
|
||||||
readingsBulkUpdate ($hash, "nextValue", $nextDesTemperature . "°C");
|
readingsBulkUpdate ($hash, "nextValue", $nextDesTemperature . $unit);
|
||||||
readingsBulkUpdate ($hash, "state", $newDesTemperature . "°C");
|
readingsBulkUpdate ($hash, "state", $newDesTemperature . $unit);
|
||||||
readingsEndUpdate ($hash, defined($hash->{LOCAL} ? 0 : 1));
|
readingsEndUpdate ($hash, defined($hash->{LOCAL} ? 0 : 1));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -337,6 +342,7 @@ sub SortNumber {
|
|||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="Heating_Control"></a>
|
<a name="Heating_Control"></a>
|
||||||
|
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
|
||||||
<h3>Heating Control</h3>
|
<h3>Heating Control</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<br>
|
<br>
|
||||||
@ -388,14 +394,14 @@ sub SortNumber {
|
|||||||
<b>Example:</b>
|
<b>Example:</b>
|
||||||
<ul>
|
<ul>
|
||||||
<code>define HCB Heating_Control Bad_Heizung 12345|05:20|21 12345|05:25|12 17:20|21 17:25|12</code><br>
|
<code>define HCB Heating_Control Bad_Heizung 12345|05:20|21 12345|05:25|12 17:20|21 17:25|12</code><br>
|
||||||
Mo-Fr are setting the temperature at 05:20 to 21°C, and at 05:25 to 12°C.
|
Mo-Fr are setting the temperature at 05:20 to 21°C, and at 05:25 to 12°C.
|
||||||
Every day will be set the temperature at 17:20 to 21°C and 17:25 to 12°C.<p>
|
Every day will be set the temperature at 17:20 to 21°C and 17:25 to 12°C.<p>
|
||||||
|
|
||||||
<code>define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Di,Do-Fr|16:00|18.5 20:00|12
|
<code>define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Tu,Th-Fr|16:00|18.5 20:00|12
|
||||||
{fhem("set dummy on"); fhem("set @ desired-temp %");}</code><br>
|
{fhem("set dummy on"); fhem("set @ desired-temp %");}</code><br>
|
||||||
At the given times and weekdays only(!) the command will be executed.<p>
|
At the given times and weekdays only(!) the command will be executed.<p>
|
||||||
|
|
||||||
<code>define HCW Heating_Control WZ_Heizung Sa-So,Mi|08:00|21 (ReadingsVal("WeAreThere", "state", "no") eq "yes")</code><br>
|
<code>define HCW Heating_Control WZ_Heizung Sa-Su,We|08:00|21 (ReadingsVal("WeAreThere", "state", "no") eq "yes")</code><br>
|
||||||
The temperature is only set if the dummy variable WeAreThere is "yes".<p>
|
The temperature is only set if the dummy variable WeAreThere is "yes".<p>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
@ -421,6 +427,7 @@ sub SortNumber {
|
|||||||
=begin html_DE
|
=begin html_DE
|
||||||
|
|
||||||
<a name="Heating_Control"></a>
|
<a name="Heating_Control"></a>
|
||||||
|
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
|
||||||
<h3>Heating Control</h3>
|
<h3>Heating Control</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<br>
|
<br>
|
||||||
@ -430,12 +437,12 @@ sub SortNumber {
|
|||||||
<code>define <name> Heating_Control <device> <profile> <command>|<condition></code>
|
<code>define <name> Heating_Control <device> <profile> <command>|<condition></code>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
Bildet ein Wochenprofil für ein <device>, zb. Heizkörper, ab. Es können für jeden Tag unterschiedliche
|
Bildet ein Wochenprofil für ein <device>, zb. Heizkörper, ab. Es können für jeden Tag unterschiedliche
|
||||||
Schaltzeiten angegeben werden. Ist das <device> ein Heizkörperthermostat (zb. FHT8b, MAX) so wird die
|
Schaltzeiten angegeben werden. Ist das <device> ein Heizkörperthermostat (zb. FHT8b, MAX) so wird die
|
||||||
zu setzende Temperatur im <profile> automatisch mittels <code>set <device> desired-temp <temp></code>
|
zu setzende Temperatur im <profile> automatisch mittels <code>set <device> desired-temp <temp></code>
|
||||||
dem Device mitgeteilt. Ist eine <condition> angegeben und ist zum Schaltpunkt der Ausdruck unwahr,
|
dem Device mitgeteilt. Ist eine <condition> angegeben und ist zum Schaltpunkt der Ausdruck unwahr,
|
||||||
so wird dieser Schaltpunkt nicht ausgeführt.<br>
|
so wird dieser Schaltpunkt nicht ausgeführt.<br>
|
||||||
Alternativ zur Automatik kann stattdessen eigener Perl-Code im <command> ausgeführt werden.
|
Alternativ zur Automatik kann stattdessen eigener Perl-Code im <command> ausgeführt werden.
|
||||||
<p>
|
<p>
|
||||||
Folgende Parameter sind im Define definiert:
|
Folgende Parameter sind im Define definiert:
|
||||||
<ul><b>device</b><br>
|
<ul><b>device</b><br>
|
||||||
@ -446,8 +453,8 @@ sub SortNumber {
|
|||||||
Angabe des Wochenprofils. Die einzelnen Schaltzeiten sind durch Leerzeichen getrennt
|
Angabe des Wochenprofils. Die einzelnen Schaltzeiten sind durch Leerzeichen getrennt
|
||||||
Die Angabe der Schaltzeiten ist nach folgendem Muster definiert:<br>
|
Die Angabe der Schaltzeiten ist nach folgendem Muster definiert:<br>
|
||||||
<ul><b>[<Wochentage>|]<Uhrzeit>|<Temperatur></b></ul><br>
|
<ul><b>[<Wochentage>|]<Uhrzeit>|<Temperatur></b></ul><br>
|
||||||
<u>Wochentage:</u> optionale Angabe, falls nicht gesetzt wird der Schaltpunkt jeden Tag ausgeführt.
|
<u>Wochentage:</u> optionale Angabe, falls nicht gesetzt wird der Schaltpunkt jeden Tag ausgeführt.
|
||||||
Für die Tage an denen dieser Schaltpunkt aktiv sein soll, ist jeder Tag mit seiner
|
Für die Tage an denen dieser Schaltpunkt aktiv sein soll, ist jeder Tag mit seiner
|
||||||
Tagesnummer (Mo=1, ..., So=7) oder Name des Tages (Mo, Di, ..., So) einzusetzen.<br>
|
Tagesnummer (Mo=1, ..., So=7) oder Name des Tages (Mo, Di, ..., So) einzusetzen.<br>
|
||||||
<u>Uhrzeit:</u>Angabe der Uhrzeit an dem geschaltet werden soll, Format: HH:MM(HH im 24 Stunden format)<br>
|
<u>Uhrzeit:</u>Angabe der Uhrzeit an dem geschaltet werden soll, Format: HH:MM(HH im 24 Stunden format)<br>
|
||||||
<u>Temperatur:</u>Angabe der zu setzenden Temperatur als Zahl<br>
|
<u>Temperatur:</u>Angabe der zu setzenden Temperatur als Zahl<br>
|
||||||
@ -457,7 +464,7 @@ sub SortNumber {
|
|||||||
Falls keine Condition in () angegeben wurde, so wird alles weitere als Command
|
Falls keine Condition in () angegeben wurde, so wird alles weitere als Command
|
||||||
interpretiert. Perl-Code ist in {} zu setzen. <br>
|
interpretiert. Perl-Code ist in {} zu setzen. <br>
|
||||||
Wichtig: Falls ein Command definiert ist, so wird zu den definierten Schaltzeiten
|
Wichtig: Falls ein Command definiert ist, so wird zu den definierten Schaltzeiten
|
||||||
nur(!) das Command ausgeführt. Falls ein desired-temp Befehl abgesetzt werde soll,
|
nur(!) das Command ausgeführt. Falls ein desired-temp Befehl abgesetzt werde soll,
|
||||||
so muss dies explizit angegeben werden.<br>
|
so muss dies explizit angegeben werden.<br>
|
||||||
Folgende Parameter werden ersetzt:<br>
|
Folgende Parameter werden ersetzt:<br>
|
||||||
<ol>
|
<ol>
|
||||||
@ -468,19 +475,19 @@ sub SortNumber {
|
|||||||
<p>
|
<p>
|
||||||
<ul><b>condition</b><br>
|
<ul><b>condition</b><br>
|
||||||
Bei Angabe einer Condition ist diese in () zu setzen und mit validem Perl-Code zu versehen.<br>
|
Bei Angabe einer Condition ist diese in () zu setzen und mit validem Perl-Code zu versehen.<br>
|
||||||
Der Rückgabedatentyp der condition muss boolean sein.<br>
|
Der Rückgabedatentyp der condition muss boolean sein.<br>
|
||||||
Die Parameter @ und % werden interpretiert.
|
Die Parameter @ und % werden interpretiert.
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
<b>Beispiel:</b>
|
<b>Beispiel:</b>
|
||||||
<ul>
|
<ul>
|
||||||
<code>define HCB Heating_Control Bad_Heizung 12345|05:20|21 12345|05:25|12 17:20|21 17:25|12</code><br>
|
<code>define HCB Heating_Control Bad_Heizung 12345|05:20|21 12345|05:25|12 17:20|21 17:25|12</code><br>
|
||||||
Mo-Fr wird die Temperatur um 05:20Uhr auf 21°C, und um 05:25Uhr auf 12°C gesetzt.
|
Mo-Fr wird die Temperatur um 05:20Uhr auf 21°C, und um 05:25Uhr auf 12°C gesetzt.
|
||||||
Jeden Tag wird die Temperatur um 17:20Uhr auf 21°C und 17:25Uhr auf 12°C gesetzt.<p>
|
Jeden Tag wird die Temperatur um 17:20Uhr auf 21°C und 17:25Uhr auf 12°C gesetzt.<p>
|
||||||
|
|
||||||
<code>define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Di,Mi|16:00|18.5 20:00|12
|
<code>define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Di,Mi|16:00|18.5 20:00|12
|
||||||
{fhem("set dummy on"); fhem("set @ desired-temp %");}</code><br>
|
{fhem("set dummy on"); fhem("set @ desired-temp %");}</code><br>
|
||||||
Zu den definierten Schaltzeiten wird nur(!) der in {} angegebene Perl-Code ausgeführt.<p>
|
Zu den definierten Schaltzeiten wird nur(!) der in {} angegebene Perl-Code ausgeführt.<p>
|
||||||
|
|
||||||
<code>define HCW Heating_Control WZ_Heizung Sa-So,Mi|08:00|21 (ReadingsVal("WeAreThere", "state", "no") eq "yes")</code><br>
|
<code>define HCW Heating_Control WZ_Heizung Sa-So,Mi|08:00|21 (ReadingsVal("WeAreThere", "state", "no") eq "yes")</code><br>
|
||||||
Die zu setzende Temperatur wird nur gesetzt, falls die Dummy Variable WeAreThere = "yes" ist.<p>
|
Die zu setzende Temperatur wird nur gesetzt, falls die Dummy Variable WeAreThere = "yes" ist.<p>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user