98_ComfoAir.pm: bug fix and documentation enhancement

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@13435 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
StefanStrobel 2017-02-18 18:09:03 +00:00
parent eb1b8addf0
commit 5da345efc4

View File

@ -37,6 +37,11 @@
# 2014-07-24 added max queue length checking and attribute # 2014-07-24 added max queue length checking and attribute
# 2016-01-25 Reading Namen mit Umlauten korrigiert # 2016-01-25 Reading Namen mit Umlauten korrigiert
# 2016-04-06 Testmode Protokollbefehle hinzugefügt # 2016-04-06 Testmode Protokollbefehle hinzugefügt
# 2016-11-13 korrektur bei set / get / readanswer. Set liefert bei Erfolg undef statt Text
# 2017-02-12 Doku ergänzt
#
#
# Todo / Ideas:
# #
package main; package main;
@ -61,6 +66,7 @@ sub ComfoAir_HandleSendQueue($);
sub ComfoAir_SendAck($); sub ComfoAir_SendAck($);
sub ComfoAir_TimeoutSend($); sub ComfoAir_TimeoutSend($);
my $ComfoAir_Version = '1.5 - 18.2.2017';
# %parseInfo: # %parseInfo:
# replyCode => msgHashRef # replyCode => msgHashRef
@ -334,6 +340,7 @@ ComfoAir_Define($$)
$hash->{BUSY} = 0; $hash->{BUSY} = 0;
$hash->{EXPECT} = ""; $hash->{EXPECT} = "";
$hash->{ModuleVersion} = $ComfoAir_Version;
if (!defined($interval)) { if (!defined($interval)) {
$hash->{INTERVAL} = 0; $hash->{INTERVAL} = 0;
@ -386,7 +393,8 @@ ComfoAir_Get($@)
Log3 $name, 3, "$name: Request found in getHash created from parseInfo data"; Log3 $name, 3, "$name: Request found in getHash created from parseInfo data";
if ($msgHash->{request}) { if ($msgHash->{request}) {
ComfoAir_Send($hash, $msgHash->{request}, "", $msgHash->{replyCode}, 1); ComfoAir_Send($hash, $msgHash->{request}, "", $msgHash->{replyCode}, 1);
my $result = ComfoAir_ReadAnswer($hash, $getName, $msgHash->{replyCode}); my ($err, $result) = ComfoAir_ReadAnswer($hash, $getName, $msgHash->{replyCode});
return $err if ($err);
return $result; return $result;
} else { } else {
return "Protocol doesn't provide a command to get $getName"; return "Protocol doesn't provide a command to get $getName";
@ -473,9 +481,10 @@ ComfoAir_Set($@)
if ($setHash{$setName}{msgHash}{request}) { if ($setHash{$setName}{msgHash}{request}) {
ComfoAir_Send($hash, $setHash{$setName}{msgHash}{request}, "", ComfoAir_Send($hash, $setHash{$setName}{msgHash}{request}, "",
$setHash{$setName}{msgHash}{replyCode},1); $setHash{$setName}{msgHash}{replyCode},1);
# falls ein minDelay bei Send implementiert wäre, müsste ReadAnswer optiniert werden, sonst wird der 2. send ggf nicht vor einem Timeout gesendet ... # falls ein minDelay bei Send implementiert wäre, müsste ReadAnswer optimiert werden, sonst wird der 2. send ggf nicht vor einem Timeout gesendet ...
my $result = ComfoAir_ReadAnswer($hash, $setName, $setHash{$setName}{msgHash}{replyCode}); my ($err, $result) = ComfoAir_ReadAnswer($hash, $setName, $setHash{$setName}{msgHash}{replyCode});
return "$setName -> $result"; #return "$setName -> $result";
return $err if ($err);
} }
return undef; return undef;
@ -729,7 +738,7 @@ ComfoAir_ReadAnswer($$$)
if ($cmd eq $expectReply) { if ($cmd eq $expectReply) {
# das war's worauf wir gewartet haben # das war's worauf wir gewartet haben
Log3 $name, 5, "$name: ReadAnswer done with success"; Log3 $name, 5, "$name: ReadAnswer done with success";
return ReadingsVal($name, $arg, ""); return (undef, ReadingsVal($name, $arg, ""));
} }
} }
ComfoAir_HandleSendQueue("direct:".$name); ComfoAir_HandleSendQueue("direct:".$name);
@ -869,7 +878,8 @@ ComfoAir_HandleSendQueue($)
($cmdHash{$hexcmd} ? " get " . $cmdHash{$hexcmd}{name} : "") . ($cmdHash{$hexcmd} ? " get " . $cmdHash{$hexcmd}{name} : "") .
" code: $hexcmd" . " code: $hexcmd" .
" frame: " . $hash->{LASTREQUEST} . " frame: " . $hash->{LASTREQUEST} .
($entry->{EXPECT} ? " and wait for " . $entry->{EXPECT} : ""); ($entry->{EXPECT} ? " and wait for " . $entry->{EXPECT} : "") .
", V " . $hash->{ModuleVersion};
DevIo_SimpleWrite($hash, $bstring, 0); DevIo_SimpleWrite($hash, $bstring, 0);
@ -907,6 +917,9 @@ ComfoAir_SendAck($)
1; 1;
=pod =pod
=item device
=item summary module for Zehnder ComfoAir, StorkAir WHR930, Wernig G90-380 and Santos 370
=item summary_DE Modul für Zehnder ComfoAir, StorkAir WHR930, Wernig G90-380 and Santos 370
=begin html =begin html
<a name="ComfoAir"></a> <a name="ComfoAir"></a>
@ -947,6 +960,7 @@ ComfoAir_SendAck($)
The module connects to the ventialation system through the given Device and either passively listens to data that is communicated The module connects to the ventialation system through the given Device and either passively listens to data that is communicated
between the ventialation system and its remote control device (e.g. CC Luxe) or it actively requests data from the between the ventialation system and its remote control device (e.g. CC Luxe) or it actively requests data from the
ventilation system every &lt;Interval&gt; seconds <br> ventilation system every &lt;Interval&gt; seconds <br>
If &lt;Interval&gt; is set to 0 then no polling will be done and the module only listens to messages on the line.<br>
<br> <br>
Example:<br> Example:<br>
<br> <br>