76_SMAInverter: V2.9.2, adapted to use extended abortArg

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@15217 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2017-10-09 16:15:04 +00:00
parent 09a2847da1
commit 7dc162b92a
2 changed files with 15 additions and 11 deletions

View File

@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it. # Do not insert empty lines here, update check depends on it.
- change: 76_SMAInverter: V2.9.2, adapted to use extended abortArg
- feature: 77_UWZ: add new sortby creation and add Italia Maps - feature: 77_UWZ: add new sortby creation and add Italia Maps
- feature: 49_SSCam: V3.2.3, new optimizeParams command to set cam properties - feature: 49_SSCam: V3.2.3, new optimizeParams command to set cam properties
- bugfix: 72_FB_CALLMONITOR: fix wrong reverse-search of emergency call - bugfix: 72_FB_CALLMONITOR: fix wrong reverse-search of emergency call

View File

@ -28,6 +28,7 @@
################################################################################################################# #################################################################################################################
# Versions History done by DS_Starter # Versions History done by DS_Starter
# #
# 2.9.2 08.10.2017 adapted to use extended abortArg (Forum:77472)
# 2.9.1 24.04.2017 fix for issue #24 (Wrong INV_TYPE for STP10000TL-20) and fix for issue #25 (unpack out of range for SB1.5-1VL-40) # 2.9.1 24.04.2017 fix for issue #24 (Wrong INV_TYPE for STP10000TL-20) and fix for issue #25 (unpack out of range for SB1.5-1VL-40)
# 2.9.0 23.04.2017 fixed issue #22: wrong logon command for SunnyBoy systems # 2.9.0 23.04.2017 fixed issue #22: wrong logon command for SunnyBoy systems
# 2.8.3 19.04.2017 enhanced inverter Type-Hash # 2.8.3 19.04.2017 enhanced inverter Type-Hash
@ -80,7 +81,7 @@ use Time::HiRes qw(gettimeofday tv_interval);
use Blocking; use Blocking;
use Time::Local; use Time::Local;
my $SMAInverterVersion = "2.9.1"; my $SMAInverterVersion = "2.9.2";
# Inverter Data fields and supported commands flags. # Inverter Data fields and supported commands flags.
# $inv_SPOT_ETODAY # Today yield # $inv_SPOT_ETODAY # Today yield
@ -460,13 +461,12 @@ sub SMAInverter_GetData($) {
# decide of operation # decide of operation
if(AttrVal($name,"mode","automatic") eq "automatic") { if(AttrVal($name,"mode","automatic") eq "automatic") {
# automatic operation mode # automatic operation mode
$hash->{HELPER}{RUNNING_PID} = BlockingCall("getstatus_DoParse", "$name", "getstatus_ParseDone", $timeout, "SMAI_ParseAborted", $hash); InternalTimer(gettimeofday()+$interval, "SMAInverter_GetData", $hash, 0);
InternalTimer(gettimeofday()+$interval, "SMAInverter_GetData", $hash, 0);
} else {
# manual operation mode
$hash->{HELPER}{RUNNING_PID} = BlockingCall("getstatus_DoParse", "$name", "getstatus_ParseDone", $timeout, "SMAI_ParseAborted", $hash);
} }
$hash->{HELPER}{RUNNING_PID} = BlockingCall("getstatus_DoParse", "$name", "getstatus_ParseDone", $timeout, "getstatus_ParseAborted", $hash);
$hash->{HELPER}{RUNNING_PID}{loglevel} = 4;
return; return;
} }
@ -964,19 +964,22 @@ return;
############################################################### ###############################################################
# Abbruchroutine Timeout Inverter Abfrage # Abbruchroutine Timeout Inverter Abfrage
############################################################### ###############################################################
sub SMAI_ParseAborted($) { sub getstatus_ParseAborted(@) {
my ($hash) = @_; my ($hash,$cause) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $discycles = $hash->{HELPER}{FAULTEDCYCLES}; my $discycles = $hash->{HELPER}{FAULTEDCYCLES};
$cause = $cause?$cause:"Timeout: process terminated";
# count of timeouts since module start # count of timeouts since module start
$discycles++; $discycles++;
$hash->{HELPER}{FAULTEDCYCLES} = $discycles; $hash->{HELPER}{FAULTEDCYCLES} = $discycles;
Log3 ($name, 1, "SMAInverter $name -> BlockingCall $hash->{HELPER}{RUNNING_PID}{fn} timed out"); Log3 ($name, 1, "SMAInverter $name -> BlockingCall $hash->{HELPER}{RUNNING_PID}{fn} $cause");
readingsSingleUpdate($hash, "state", "timeout", 1); readingsSingleUpdate($hash,"state",$cause, 1);
delete($hash->{HELPER}{RUNNING_PID}); delete($hash->{HELPER}{RUNNING_PID});
return;
} }
########################################################################## ##########################################################################