diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index fe36acb..7808131 100755 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -89,6 +89,7 @@ sub AMADCommBridge_Initialize($) { . 'enableSubCalls:0,1 ' . 'disable:1 ' . 'allowfrom ' + . 'fhemServerIP ' . $readingFnAttributes; foreach my $d ( sort keys %{ $modules{AMADCommBridge}{defptr} } ) { @@ -189,10 +190,10 @@ sub Undef($$) { my ( $hash, $arg ) = @_; + TcpServer_Close($hash); delete $modules{AMADCommBridge}{defptr}{BRIDGE} if ( defined( $modules{AMADCommBridge}{defptr}{BRIDGE} ) and $hash->{BRIDGE} ); - TcpServer_Close($hash); return undef; } @@ -732,8 +733,8 @@ sub ErrorHandling($$$) { } sub Open($) { - my $hash = shift; + my $name = $hash->{NAME}; my $port = $hash->{PORT}; @@ -753,7 +754,6 @@ sub Open($) { Log3( $name, 3, "AMADCommBridge ($name) - Socket opened." ); return $ret; - } else { @@ -764,12 +764,10 @@ sub Open($) { } sub Close($) { - my $hash = shift; my $name = $hash->{NAME}; - delete $modules{AMADCommBridge}{defptr}{BRIDGE}; TcpServer_Close($hash); if ( not defined( $hash->{FD} ) ) { @@ -1027,8 +1025,10 @@ sub ResponseProcessing($$) { Dispatch( $bhash, $json, undef ); Log3( $bname, 4, "AMADCommBridge ($bname) - call Dispatcher" ); - readingsSingleUpdate( $bhash, 'fhemServerIP', - $decode_json->{firstrun}{'fhemserverip'}, 1 ) + CommandAttr( undef, + $bname + . ' fhemServerIP ' + . $decode_json->{firstrun}{'fhemserverip'} ) if ( defined( $decode_json->{firstrun}{'fhemserverip'} ) ); $response = diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index ffc3c7c..5a69d54 100755 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -114,6 +114,8 @@ use warnings; use POSIX; use FHEM::Meta; +use Data::Dumper; #only for Debugging + use GPUtils qw(GP_Import) ; # wird für den Import der FHEM Funktionen aus der fhem.pl benötigt @@ -236,6 +238,8 @@ sub Define($$) { "AMADDevice ($name) - defined with AMAD_ID: $amad_id on port $hash->{PORT}" ); + $hash->{NOTIFYDEV} .= ',' . $iodev + if ( defined($iodev) ); $modules{AMADDevice}{defptr}{$amad_id} = $hash; return undef; @@ -380,9 +384,11 @@ sub Notify($$) { @{$events} or grep /^ATTR.$name.setUserFlowState.*/, @{$events} + or grep /^ATTR.$hash->{IODev}->{NAME}.fhemServerIP.*/, + @{$events} ) - and $init_done and $devname eq 'global' + and $init_done ); GetUpdate($hash) @@ -426,8 +432,8 @@ sub GetUpdate($) { $init_done and ( ReadingsVal( $name, 'deviceState', 'unknown' ) eq 'unknown' or ReadingsVal( $name, 'deviceState', 'online' ) eq 'online' ) - and AttrVal( $name, 'disable', 0 ) ne 1 - and ReadingsVal( $bname, 'fhemServerIP', 'not set' ) ne 'not set' + and AttrVal( $name, 'disable', 0 ) ne 1 + and AttrVal( $bname, 'fhemServerIP', 'not set' ) ne 'not set' ) { @@ -461,7 +467,7 @@ sub statusRequest($) { my $activetask = AttrVal( $name, 'checkActiveTask', 'none' ); my $userFlowState = AttrVal( $name, 'setUserFlowState', 'none' ); my $apssid = AttrVal( $name, 'setAPSSID', 'none' ); - my $fhemip = ReadingsVal( $hash->{IODev}->{NAME}, 'fhemServerIP', 'none' ); + my $fhemip = AttrVal( $hash->{IODev}->{NAME}, 'fhemServerIP', 'none' ); my $fhemCtlMode = AttrVal( $hash->{IODev}->{NAME}, 'fhemControlMode', 'none' ); my $bport = $hash->{IODev}->{PORT};