From 30c35505cc5f962baabeaea7c081604723c50489 Mon Sep 17 00:00:00 2001 From: markooldenburg <> Date: Wed, 4 Nov 2015 21:34:26 +0000 Subject: [PATCH] 74_AMAD: AMADCommBridge communication problem with automagic 1.29 git-svn-id: https://svn.fhem.de/fhem/trunk@9782 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/74_AMAD.pm | 59 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 47 insertions(+), 13 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 029554837..bfe0ae77c 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # 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. + - bugfix: 74_AMAD: AMADCommBridge communication problem with automagic 1.29 - feature: fhem_codemirror: Added DOIF autocomplete-keywords. Added feature to autocomplete on any keypress. - change: ATTENTION: Removed deprecated module 75_MSG.pm. Users will need to diff --git a/fhem/FHEM/74_AMAD.pm b/fhem/FHEM/74_AMAD.pm index 110ef109c..1c07c481a 100644 --- a/fhem/FHEM/74_AMAD.pm +++ b/fhem/FHEM/74_AMAD.pm @@ -35,7 +35,7 @@ use Time::HiRes qw(gettimeofday); use HttpUtils; use TcpServerUtils; -my $version = "0.8.1"; +my $version = "0.8.2"; @@ -894,13 +894,13 @@ sub AMAD_CommBridge_Read($) { ### my @data = split( '\R\R', $buf ); + my $chash = undef; if ( $data[0] =~ /FHEMCMD: setreading\b/ ) { my $tv = $data[1]; @data = split( '\R', $data[0] ); - $data[2] =~ s/FHEMDEVICE: //; - my $chash = $defs{$data[2]}; + ### Begin Response Processing my @valuestring = split( '@@@@', $tv ); @@ -913,15 +913,38 @@ sub AMAD_CommBridge_Read($) { my $t; my $v; - while( ( $t, $v ) = each %buffer ) { - $v =~ s/null//g; + + if( $data[2] =~ /FHEMDEVICE:/ ) { + + $data[2] =~ s/FHEMDEVICE: //; + my $chash = $defs{$data[2]}; + + while( ( $t, $v ) = each %buffer ) { + $v =~ s/null//g; - readingsBeginUpdate( $chash ); - readingsBulkUpdate( $chash, $t, $v ) if( defined( $v ) ); - } + readingsBeginUpdate( $chash ); + readingsBulkUpdate( $chash, $t, $v ) if( defined( $v ) ); + } - readingsBulkUpdate( $chash, "lastStatusRequestState", "statusRequest_done" ); - readingsEndUpdate( $chash, 1 ); + readingsBulkUpdate( $chash, "lastStatusRequestState", "statusRequest_done" ); + readingsEndUpdate( $chash, 1 ); + + } else { + $data[3] =~ s/FHEMDEVICE: //; + my $chash = $defs{$data[3]}; + + while( ( $t, $v ) = each %buffer ) { + $v =~ s/null//g; + + readingsBeginUpdate( $chash ); + readingsBulkUpdate( $chash, $t, $v ) if( defined( $v ) ); + } + + readingsBulkUpdate( $chash, "lastStatusRequestState", "statusRequest_done" ); + readingsEndUpdate( $chash, 1 ); + + } + ### End Response Processing return; @@ -947,10 +970,20 @@ sub AMAD_CommBridge_Read($) { elsif ( $data[0] =~ /FHEMCMD: statusrequest\b/ ) { @data = split( '\R', $data[0] ); - $data[2] =~ s/FHEMDEVICE: //; - my $chash = $defs{$data[2]}; + if( $data[2] =~ /FHEMDEVICE:/ ) { + + $data[2] =~ s/FHEMDEVICE: //; + my $chash = $defs{$data[2]}; + + return AMAD_GetUpdateLocal( $chash ); - return AMAD_GetUpdateLocal( $chash ); + } else { + $data[3] =~ s/FHEMDEVICE: //; + my $chash = $defs{$data[3]}; + + return AMAD_GetUpdateLocal( $chash ); + + } } }