From 2a3bed339ff825009d6cbbd8d0010b526e9c4d9e Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 7 Nov 2016 09:41:47 +0000 Subject: [PATCH] FBAHAHTTP: allow rename of FBAHAHTTP device without manual fic (Forum #58064) git-svn-id: https://svn.fhem.de/fhem/trunk@12520 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_FBAHAHTTP.pm | 14 ++++++++++++++ fhem/FHEM/10_FBDECT.pm | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/fhem/FHEM/00_FBAHAHTTP.pm b/fhem/FHEM/00_FBAHAHTTP.pm index 8c1cd41d0..9b7612c63 100644 --- a/fhem/FHEM/00_FBAHAHTTP.pm +++ b/fhem/FHEM/00_FBAHAHTTP.pm @@ -18,6 +18,7 @@ FBAHAHTTP_Initialize($) $hash->{SetFn} = "FBAHAHTTP_Set"; $hash->{AttrFn} = "FBAHAHTTP_Attr"; $hash->{ReadyFn} = "FBAHAHTTP_Ready"; + $hash->{RenameFn} = "FBAHAHTTP_RenameFn"; $hash->{AttrList} = "dummy:1,0 fritzbox-user polltime async_delay ". "disable:0,1 disabledForIntervals"; } @@ -89,6 +90,19 @@ FBAHAHTTP_connect($) return undef; } +sub +FBAHAHTTP_RenameFn($$) +{ + my ($new, $old) = @_; + for my $d (devspec2array("TYPE=FBDECT")) { + my $hash = $defs{$d}; + next if(!$hash); + $hash->{DEF} =~ s/^$old:/$new:/; + $attr{$d}{IODev} = $new if(AttrVal($d,"IODev","") eq $old); + } + FBDECT_renameIoDev($new, $old); +} + ##################################### sub FBAHAHTTP_Poll($) diff --git a/fhem/FHEM/10_FBDECT.pm b/fhem/FHEM/10_FBDECT.pm index ea4b2d9f0..18fdefc26 100644 --- a/fhem/FHEM/10_FBDECT.pm +++ b/fhem/FHEM/10_FBDECT.pm @@ -281,6 +281,20 @@ FBDECT_ParseHttp($$$) return $hash->{NAME}; } +sub +FBDECT_renameIoDev($$) # Called from FBAHAHTTP +{ + my ($new, $old) = @_; + my $dp = $modules{FBDECT}{defptr}; + for my $ok (keys %{$dp}) { + my $nk = $ok; + $nk =~ s/^$old:/$new:/; + next if($nk eq $ok); + $dp->{$nk} = $dp->{$ok}; + delete $dp->{$ok}; + } +} + ################################### sub FBDECT_Parse($$@)