From 8fd5c30f053525642ecc0641337c6b418fb68410 Mon Sep 17 00:00:00 2001 From: justme-1968 Date: Sun, 13 Jan 2019 11:31:51 +0000 Subject: [PATCH] 39_alexa.pm: better UndefineFn, termiante imediataly in ShutdownFn git-svn-id: https://svn.fhem.de/fhem/trunk@18235 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/39_alexa.pm | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/39_alexa.pm b/fhem/FHEM/39_alexa.pm index b66e5b93a..3c76dca37 100644 --- a/fhem/FHEM/39_alexa.pm +++ b/fhem/FHEM/39_alexa.pm @@ -28,7 +28,7 @@ alexa_Initialize($) $hash->{DefFn} = "alexa_Define"; $hash->{NotifyFn} = "alexa_Notify"; $hash->{UndefFn} = "alexa_Undefine"; - $hash->{ShutdownFn} = "alexa_Undefine"; + $hash->{ShutdownFn} = "alexa_Shutdown"; $hash->{SetFn} = "alexa_Set"; $hash->{GetFn} = "alexa_Get"; $hash->{AttrFn} = "alexa_Attr"; @@ -162,8 +162,25 @@ sub alexa_Undefine($$) { my ($hash, $arg) = @_; + my $name = $hash->{NAME}; - alexa_stopAlexaFHEM($hash); + if( $hash->{PID} ) { + $hash->{undefine} = 1; + alexa_stopAlexaFHEM($hash); + + return "$name will be deleted after alexa-fhem has stopped or after 5 seconds. whatever comes first."; + } + + delete $modules{$hash->{TYPE}}{defptr}; + + return undef; +} +sub +alexa_Shutdown($$) +{ + my ($hash, $arg) = @_; + + alexa_stoppedAlexaFHEM($hash); delete $modules{$hash->{TYPE}}{defptr}; @@ -651,7 +668,12 @@ alexa_stoppedAlexaFHEM($) $hash->{LAST_STOP} = FmtDateTime( gettimeofday() ); readingsSingleUpdate($hash, 'alexaFHEM', 'stopped', 1 ); - if( $hash->{start} ) { + if( $hash->{undefine} ) { + delete $hash->{undefine}; + CommandDelete(undef, $name); + Log3 $name, 3, "$name: alexaFHEM deleted"; + + } elsif( $hash->{start} ) { alexa_startAlexaFHEM($hash) } }