mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
LUXTRONIK2: Doku, currentOperatingStatus
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@4734 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c02cc0c7bc
commit
ee0df48468
@ -1,4 +1,4 @@
|
||||
################################################################
|
||||
###############################################################
|
||||
#
|
||||
# Copyright notice
|
||||
#
|
||||
@ -37,9 +37,13 @@ use Time::HiRes qw/ time /;
|
||||
use POSIX;
|
||||
use Net::Telnet;
|
||||
|
||||
my $cc; # The Itmes Changed Counter
|
||||
#List of firmware versions that are known to be compatible with this modul
|
||||
my $testedFirmware = "#V1.54C#";
|
||||
my $compatibleFirmware = "#V1.54C#";
|
||||
|
||||
sub
|
||||
#my $cc; # The Itmes Changed Counter
|
||||
|
||||
sub ########################################
|
||||
LUXTRONIK2_Initialize($)
|
||||
{
|
||||
my ($hash) = @_;
|
||||
@ -56,7 +60,7 @@ LUXTRONIK2_Initialize($)
|
||||
$readingFnAttributes;
|
||||
}
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_Define($$)
|
||||
{
|
||||
my ($hash, $def) = @_;
|
||||
@ -88,7 +92,7 @@ LUXTRONIK2_Define($$)
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_Undefine($$)
|
||||
{
|
||||
my ($hash, $arg) = @_;
|
||||
@ -100,7 +104,7 @@ LUXTRONIK2_Undefine($$)
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_Set($$@)
|
||||
{
|
||||
my ($hash, $name, $cmd, $val) = @_;
|
||||
@ -165,7 +169,7 @@ LUXTRONIK2_Set($$@)
|
||||
return "Unknown argument $cmd, choose one of $list";
|
||||
}
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_Attr(@)
|
||||
{
|
||||
my ($cmd,$name,$aName,$aVal) = @_;
|
||||
@ -184,7 +188,7 @@ LUXTRONIK2_Attr(@)
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_GetUpdate($)
|
||||
{
|
||||
my ($hash) = @_;
|
||||
@ -205,7 +209,7 @@ LUXTRONIK2_GetUpdate($)
|
||||
}
|
||||
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_DoUpdate($)
|
||||
{
|
||||
my ($string) = @_;
|
||||
@ -409,7 +413,7 @@ SKIP_VISIBILITY_READING:
|
||||
$return_str .= "|1";
|
||||
# 2 - currentOperatingStatus1
|
||||
$return_str .= "|".$heatpump_values[117];
|
||||
# 3 - currentOperatingStatus2
|
||||
# 3 - currentOperatingStatus3
|
||||
$return_str .= "|".$heatpump_values[119];
|
||||
# 4 - Stufe - Value 121
|
||||
$return_str .= "|".$heatpump_values[121];
|
||||
@ -487,12 +491,18 @@ SKIP_VISIBILITY_READING:
|
||||
$return_str .= "|".$heatpump_values[61];
|
||||
# 39 - operatingHoursSecondHeatSource3
|
||||
$return_str .= "|".$heatpump_values[62];
|
||||
# 40 - currentOperatingStatus2
|
||||
$return_str .= "|".$heatpump_values[118];
|
||||
# 41 - durationOperatingStatus
|
||||
$return_str .= "|".$heatpump_values[120];
|
||||
# 42 - timeError0
|
||||
$return_str .= "|".$heatpump_values[95];
|
||||
|
||||
return $return_str;
|
||||
}
|
||||
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_UpdateDone($)
|
||||
{
|
||||
my ($string) = @_;
|
||||
@ -573,22 +583,32 @@ LUXTRONIK2_UpdateDone($)
|
||||
$counterRetry = 0;
|
||||
readingsBeginUpdate($hash);
|
||||
|
||||
#Operating status of heatpump
|
||||
my $currentOperatingStatus1 = $wpOpStat1{$a[2]};
|
||||
#Operating status of heat pump
|
||||
my $currentOperatingStatus1 = $wpOpStat1{$a[2]}; ##############
|
||||
$currentOperatingStatus1 = "unbekannt (".$a[2].")" unless $currentOperatingStatus1;
|
||||
readingsBulkUpdate($hash,"currentOperatingStatus1",$currentOperatingStatus1);
|
||||
my $currentOperatingStatus2 = $wpOpStat2{$a[3]};
|
||||
# refine text of second state
|
||||
my $currentOperatingStatus2 = "unknown ($a[40])"; ##############
|
||||
my $prefix = "";
|
||||
if ($a[40] == 0 || $a[40] == 2) { $prefix = "seit ";}
|
||||
elsif ($a[40] == 1) { $prefix = "in ";}
|
||||
if ($a[40] == 2) { #Sonderbehandlung bei WP-Fehlern
|
||||
$currentOperatingStatus2 = $prefix . strftime "%d.%m.%Y %H:%M:%S", localtime($a[42]);
|
||||
} else {
|
||||
$currentOperatingStatus2 = $prefix . LUXTRONIK2_FormatDuration($a[41]);
|
||||
}
|
||||
readingsBulkUpdate($hash,"currentOperatingStatus2",$currentOperatingStatus2);
|
||||
my $currentOperatingStatus3 = $wpOpStat2{$a[3]}; ##############
|
||||
# refine text of third state
|
||||
if ($a[3]==6) {
|
||||
$currentOperatingStatus2 = "Stufe ".$a[4]." ".LUXTRONIK2_CalcTemp($a[5])." °C ";
|
||||
$currentOperatingStatus3 = "Stufe ".$a[4]." ".LUXTRONIK2_CalcTemp($a[5])." °C ";
|
||||
}
|
||||
elsif ($a[3]==7) {
|
||||
if ($a[6]==1) {$currentOperatingStatus2 = "Abtauen (Kreisumkehr)";}
|
||||
else {$currentOperatingStatus2 = "Luftabtauen";}
|
||||
if ($a[6]==1) {$currentOperatingStatus3 = "Abtauen (Kreisumkehr)";}
|
||||
else {$currentOperatingStatus3 = "Luftabtauen";}
|
||||
}
|
||||
$currentOperatingStatus2 = "unbekannt (".$a[3].")" unless $currentOperatingStatus2;
|
||||
readingsBulkUpdate($hash,"currentOperatingStatus2",$currentOperatingStatus2);
|
||||
|
||||
$currentOperatingStatus3 = "unbekannt (".$a[3].")" unless $currentOperatingStatus3;
|
||||
readingsBulkUpdate($hash,"currentOperatingStatus3",$currentOperatingStatus3);
|
||||
|
||||
# Hot water operating mode
|
||||
$value = $wpMode{$a[7]};
|
||||
$value = "unbekannt (".$a[7].")" unless $value;
|
||||
@ -671,21 +691,21 @@ LUXTRONIK2_UpdateDone($)
|
||||
if ($a[33]>0) {readingsBulkUpdate($hash,"operatingHoursHeatPump",floor($a[33]/360+0.5)/10);}
|
||||
if ($a[34]>0) {readingsBulkUpdate($hash,"operatingHoursHeating",floor($a[34]/360+0.5)/10);}
|
||||
if ($a[35]>0) {readingsBulkUpdate($hash,"operatingHoursHotWater",floor($a[35]/360+0.5)/10);}
|
||||
if ($a[36]>0) {readingsBulkUpdate($hash,"heatQuantityHeating",$a[36]);}
|
||||
if ($a[37]>0) {readingsBulkUpdate($hash,"heatQuantityHotWater",$a[37]);}
|
||||
if ($a[36]>0) {readingsBulkUpdate($hash,"heatQuantityHeating",$a[36]/10);}
|
||||
if ($a[37]>0) {readingsBulkUpdate($hash,"heatQuantityHotWater",$a[37]/10);}
|
||||
if ($a[38]>0) {readingsBulkUpdate($hash,"operatingHoursSecondHeatSource2",floor($a[38]/360+0.5)/10);}
|
||||
if ($a[39]>0) {readingsBulkUpdate($hash,"operatingHoursSecondHeatSource3",floor($a[39]/360+0.5)/10);}
|
||||
|
||||
#HTML for floorplan
|
||||
if(AttrVal($name, "statusHTML", "none") ne "none") {
|
||||
$value = "<div class=fp_" . $a[0] . "_title>" . $a[0] . "</div>";
|
||||
$value .= $currentOperatingStatus1 . "<br>";
|
||||
$value .= $currentOperatingStatus2 . "<br>";
|
||||
$value .= "$currentOperatingStatus1 $currentOperatingStatus2<br>";
|
||||
$value .= $currentOperatingStatus3 . "<br>";
|
||||
$value .= "Brauchwasser: " . $hotWaterTemperature . "°C";
|
||||
readingsBulkUpdate($hash,"floorplanHTML",$value);
|
||||
}
|
||||
|
||||
readingsBulkUpdate($hash,"state",$currentOperatingStatus1." - ".$currentOperatingStatus2);
|
||||
readingsBulkUpdate($hash,"state","$currentOperatingStatus1 $currentOperatingStatus2 - $currentOperatingStatus3");
|
||||
|
||||
readingsEndUpdate($hash,1);
|
||||
|
||||
@ -723,7 +743,7 @@ LUXTRONIK2_UpdateDone($)
|
||||
}
|
||||
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_UpdateAborted($)
|
||||
{
|
||||
my ($hash) = @_;
|
||||
@ -733,7 +753,7 @@ LUXTRONIK2_UpdateAborted($)
|
||||
}
|
||||
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_CalcTemp($)
|
||||
{
|
||||
my ($temp) = @_;
|
||||
@ -743,8 +763,20 @@ LUXTRONIK2_CalcTemp($)
|
||||
return $temp;
|
||||
}
|
||||
|
||||
sub ########################################
|
||||
LUXTRONIK2_FormatDuration($)
|
||||
{
|
||||
my ($value) = @_;
|
||||
my $returnstr = sprintf "%02d:", int($value/3600);
|
||||
$value %= 3600;
|
||||
$returnstr .= sprintf "%02d:", int($value/60);
|
||||
$value %= 60;
|
||||
$returnstr .= sprintf "%02d", $value;
|
||||
|
||||
return $returnstr;
|
||||
}
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_SetParameter($$$)
|
||||
{
|
||||
my ($hash, $parameterName, $realValue) = @_;
|
||||
@ -833,7 +865,7 @@ LUXTRONIK2_SetParameter($$$)
|
||||
}
|
||||
|
||||
|
||||
sub
|
||||
sub ########################################
|
||||
LUXTRONIK2_synchronizeClock (@)
|
||||
{
|
||||
my ($hash,$maxDelta) = @_;
|
||||
@ -881,14 +913,10 @@ LUXTRONIK2_synchronizeClock (@)
|
||||
return $returnStr;
|
||||
}
|
||||
|
||||
|
||||
sub
|
||||
LUXTRONIK2_checkFirmware ($)
|
||||
sub ########################################
|
||||
LUXTRONIK2_checkFirmware ($)
|
||||
{
|
||||
my ($myFirmware) = @_;
|
||||
#List of firmware versions that are known to be compatible with this modul
|
||||
my $testedFirmware = "#V1.54C#";
|
||||
my $compatibleFirmware = "#V1.54C#";
|
||||
|
||||
#Firmware not tested
|
||||
if (index("#".$myFirmware."#",$testedFirmware) == -1) {
|
||||
@ -910,9 +938,11 @@ LUXTRONIK2_checkFirmware ($)
|
||||
<a name="LUXTRONIK2"></a>
|
||||
<h3>LUXTRONIK2</h3>
|
||||
<ul>
|
||||
Luxtronik 2.0 is a heating controller, used in Alpha Innotec and Siemens Novelan heat pumps.
|
||||
Luxtronik 2.0 is a heating controller used in Alpha Innotec and Siemens Novelan heat pumps.
|
||||
It has a built-in ethernet port, so it can be directly integrated into a local area network (LAN).
|
||||
<br>
|
||||
<i>The modul is tested with firmware v1.54C.</i>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<a name="LUXTRONIK2define"></a>
|
||||
@ -922,10 +952,7 @@ LUXTRONIK2_checkFirmware ($)
|
||||
<br>
|
||||
If the pool interval is omitted, it is set to 300 (seconds). Smallest possible value is 60.
|
||||
<br>
|
||||
Example:
|
||||
<ul>
|
||||
<code>define Heizung LUXTRONIK2 192.168.0.12 600</code>
|
||||
</ul>
|
||||
Example: <code>define Heizung LUXTRONIK2 192.168.0.12 600</code>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
@ -938,7 +965,7 @@ LUXTRONIK2_checkFirmware ($)
|
||||
<li><b><statusRequest></b> - Update device information</li>
|
||||
<li><b><synchClockHeatPump></b> - Synchronizes controller clock with FHEM time. <b>This change is lost in case of controller power off!!</b></li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<a name="LUXTRONIK2get"></a>
|
||||
<b>Get</b>
|
||||
<ul>
|
||||
@ -950,17 +977,17 @@ LUXTRONIK2_checkFirmware ($)
|
||||
<b>Attributes</b>
|
||||
<ul>
|
||||
<li>statusHTML<br>
|
||||
if set, a HTML-formatted reading named "floorplanHTML" is created that can be used with the <a href="#FLOORPLAN">FLOORPLAN</a> module.<br>
|
||||
If set, a HTML-formatted reading named "floorplanHTML" is created. It can be used with the <a href="#FLOORPLAN">FLOORPLAN</a> module.<br>
|
||||
Currently, if the value of this attribute is not NULL, the corresponding reading consists of the current status of the heat pump and the temperature of the water.</li>
|
||||
<li>allowSetParameter <0|1><br>
|
||||
<li>allowSetParameter < 0 | 1 ><br>
|
||||
The <a href="#LUXTRONIK2set">parameters</a> of the heat pump controller can only be changed if this attribut is set to 1.</li>
|
||||
<li>autoSynchClock <delay><br>
|
||||
Corrects the clock of the heatpump automatically if certain <i>delay</i> (10 s - 600 s) against the FHEM time is reached. Does a firmware check before.<br>
|
||||
<i>(A 'delayDeviceTimeCalc' <= 2 s is due to the internal calculation interval of the heat pump controller)</i></li>
|
||||
<li>ignoreFirmwareCheck <0|1><br>
|
||||
<li>ignoreFirmwareCheck < 0 | 1 ><br>
|
||||
A firmware check assures before each set operation that a heatpump controller with untested firmware is not damaged accidently. If this attribute is set to 1, the firmware check is ignored and new firmware can be tested for compatibility.</li>
|
||||
<li><a href="#do_not_notify">do_not_notify</a></li>
|
||||
</ul>
|
||||
<li><a href="#readingFnAttributes">readingFnAttributes</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
</ul>
|
||||
@ -968,12 +995,14 @@ LUXTRONIK2_checkFirmware ($)
|
||||
=end html
|
||||
|
||||
=begin html_DE
|
||||
|
||||
<a name="LUXTRONIK2"></a>
|
||||
<h3>LUXTRONIK2</h3>
|
||||
<ul>
|
||||
Luxtronik 2.0 ist eine Heizungssteuerung, welchen in Wärmepumpen von Alpha Innotec und Siemens Novelan verbaut ist.
|
||||
Sie besitzt einen Ethernet Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
|
||||
Die Luxtronik 2.0 ist eine Heizungssteuerung, welche in Wärmepumpen von Alpha Innotec und Siemens Novelan verbaut ist.
|
||||
Sie besitzt einen Ethernet Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.<br>
|
||||
<i>Das Modul wurde bisher mit der Steuerungs-Firmware v1.54C getestet.</i>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<a name="LUXTRONIK2define"></a>
|
||||
@ -981,7 +1010,7 @@ LUXTRONIK2_checkFirmware ($)
|
||||
<ul>
|
||||
<code>define <name> LUXTRONIK2 <IP-Adresse> [Abfrage-Interval]</code>
|
||||
<br>
|
||||
Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste mögliche Wert ist 60.
|
||||
Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste mögliche Wert ist 60.
|
||||
<br>
|
||||
Beispiel: <code>define Heizung LUXTRONIK2 192.168.0.12 600</code>
|
||||
|
||||
@ -990,13 +1019,14 @@ LUXTRONIK2_checkFirmware ($)
|
||||
|
||||
<a name="LUXTRONIK2set"></a>
|
||||
<b>Set</b><br>
|
||||
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpe mit ungetester Firmware nicht unabsichtlich beschädigt werden.
|
||||
<ul>
|
||||
<li><b><hotWaterOperatingMode></b> <Mode:Auto|Party|Off>- Betriebsmodus des Heizuwasserboilers</l>
|
||||
<li><b><hotWaterTemperatureTarget></b> <Temperatur °C> - Soll-Temperatur des Heizwasserboilers</li>
|
||||
<li><b><INTERVAL></b> <Sekunden> - Abfrageinterval ändern</li>
|
||||
<li><b><statusRequest></b> - Aktuallisieren der Gerätewerte</li>
|
||||
<li><b><synchClockHeatPump></b> - Abgleich der Uhr der Steuerung mit der FHEM Zeit. <b>Diese Änderung geht verlordn, sobald die Steuerung ausgeschaltet wird!!</b></li>
|
||||
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetester Firmware nicht unabsichtlich beschädigt werden.
|
||||
<li>hotWaterOperatingMode <Betriebsmodus> - Betriebsmodus des Heißwasserboilers ( Auto | Party | Off )</l>
|
||||
<li>hotWaterTemperatureTarget <Temperatur> - Soll-Temperatur des Heißwasserboilers in °C</li>
|
||||
<li>INTERVAL <Abfrageinterval> - Abfrageinterval in Sekunden</li>
|
||||
<li>statusRequest - Aktualisieren der Gerätewerte</li>
|
||||
<li>synchClockHeatPump - Abgleich der Uhr der Steuerung mit der FHEM Zeit. <br>
|
||||
<b>!! Diese Änderung geht verloren, sobald die Steuerung ausgeschaltet wird!!</b></li>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
@ -1011,16 +1041,16 @@ LUXTRONIK2_checkFirmware ($)
|
||||
<b>Attribute</b>
|
||||
<ul>
|
||||
<li>statusHTML<br>
|
||||
wenn gesetzt, dann wird ein HTML-formatierter Wert "floorplanHTML" erzeugt welcher vom Modul <a href="#FLOORPLAN">FLOORPLAN</a> genutzt werden kann.<br>
|
||||
wenn gesetzt, dann wird ein HTML-formatierter Wert "floorplanHTML" erzeugt, welcher vom Modul <a href="#FLOORPLAN">FLOORPLAN</a> genutzt werden kann.<br>
|
||||
Momentan wird nur geprüft, ob der Wert dieses Attributes ungleich NULL ist, der entsprechende Gerätewerte besteht aus dem aktuellen Wärmepumpenstatus und der Heizwassertemperatur.</li>
|
||||
<li>allowSetParameter <0|1><br>
|
||||
<li>allowSetParameter < 0 | 1 ><br>
|
||||
Die internen <a href="#LUXTRONIK2set">Parameter</a> der Wärmepumpensteuerung können nur geändert werden, wenn dieses Attribut auf 1 gesetzt ist.</li>
|
||||
<li>autoSynchClock <Zeitunterschied><br>
|
||||
Die Uhr der Wärmepumpe wird automatisch korrigiert, wenn ein gewisser <i>Zeitunterschied</i> (10 s - 600 s) gegenüber der FHEM Zeit erreicht ist. Zuvor wird ein die Kompatibilität der Firmware überprüft.<br>
|
||||
<i>(Ein Gerätewert 'delayDeviceTimeCalc' <= 2 s ist auf die internen Berechnungsintervale der Wärmepumpensteuerung zurück zu führen.)</i></li>
|
||||
<li>ignoreFirmwareCheck <0|1><br>
|
||||
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpe mit ungetester Firmware nicht unabsichtlich beschädigt werden. Wenn dieses Attribute auf 1 gesetzt ist, dann wird der Firmware-Test ignoriert und neue Firmware kann getestet werden. Dieses Attribut wird jedoch ignoriert, wenn die Steuerungs-Firmware bereits als nicht kompatibel berichtet wurde.</li>
|
||||
<li><a href="#do_not_notify">do_not_notify</a></li>
|
||||
Die Uhr der Wärmepumpe wird automatisch korrigiert, wenn ein gewisser <i>Zeitunterschied</i> (10 s - 600 s) gegenüber der FHEM Zeit erreicht ist. Zuvor wird die Kompatibilität der Firmware überprüft.<br>
|
||||
<i>(Ein Gerätewert 'delayDeviceTimeCalc' <= 2 s ist auf die internen Berechnungsintervale der Wärmepumpensteuerung zurückzuführen.)</i></li>
|
||||
<li>ignoreFirmwareCheck < 0 | 1 ><br>
|
||||
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetester Firmware nicht unabsichtlich beschädigt werden. Wenn dieses Attribute auf 1 gesetzt ist, dann wird der Firmware-Test ignoriert und neue Firmware kann getestet werden. Dieses Attribut wird jedoch ignoriert, wenn die Steuerungs-Firmware bereits als nicht kompatibel berichtet wurde.</li>
|
||||
<li><a href="#readingFnAttributes">readingFnAttributes</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user