From 688eb030b71767edb0e2caa8d2990c5038886c79 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Fri, 5 Jul 2013 08:23:03 +0000 Subject: [PATCH] FHEMWEB inform: remove \n from the STATE, since \n is record separator git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@3386 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 39b4042af..5e057cf2f 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -2344,14 +2344,16 @@ FW_roomStatesForInform($) my ($room) = @_; return "" if(!$room); - my $data = ""; my @rl = devspec2array("room=$room"); my %extPage = (); + my @data; foreach my $dn (@rl) { my ($allSet, $cmdlist, $txt) = FW_devState($dn, "", \%extPage); - $data .= "$dn<<$defs{$dn}{STATE}<<$txt\r\n" - if($defs{$dn} && $defs{$dn}{STATE} && $defs{$dn}{TYPE} ne "weblink"); + if($defs{$dn} && $defs{$dn}{STATE} && $defs{$dn}{TYPE} ne "weblink") { + push @data, "$dn<<$defs{$dn}{STATE}<<$txt"; + } } + my $data = join("\n", map { s/\n/ /gm; $_ } @data)."\n"; return $data; } @@ -2365,7 +2367,7 @@ FW_Notify($$) my $ln = $ntfy->{NAME}; my $dn = $dev->{NAME}; - my $data; + my @data; my %extPage; my $rn = AttrVal($dn, "room", ""); @@ -2381,7 +2383,7 @@ FW_Notify($$) my ($allSet, $cmdlist, $txt) = FW_devState($dn, "", \%extPage); ($FW_wname, $FW_ME, $FW_ss, $FW_tp, $FW_subdir) = @old; - $data = "$dn<<$dev->{STATE}<<$txt\n"; + push @data, "$dn<<$dev->{STATE}<<$txt"; #Add READINGS if($dev->{CHANGED}) { # It gets deleted sometimes (?) @@ -2392,8 +2394,8 @@ FW_Notify($$) next; #ignore 'set' commands } my ($readingName,$readingVal) = split(": ",$dev->{CHANGED}[$i],2); - $data .= "$dn-$readingName<<$readingVal<<$readingVal\n"; - $data .= "$dn-$readingName-ts<<$tn<<$tn\n"; + push @data, "$dn-$readingName<<$readingVal<<$readingVal"; + push @data, "$dn-$readingName-ts<<$tn<<$tn"; } } } elsif($filter eq "console") { @@ -2406,15 +2408,14 @@ FW_Notify($$) my $max = int(@{$dev->{CHANGED}}); my $dt = $dev->{TYPE}; for(my $i = 0; $i < $max; $i++) { - $data .= "$tn $dt $dn ".$dev->{CHANGED}[$i]."
\n"; + push @data,("$tn $dt $dn ".$dev->{CHANGED}[$i]."
"); } } - } - if($data) { + if(@data) { # Collect multiple changes (e.g. from noties) into one message - $ntfy->{INFORMBUF} .= $data; + $ntfy->{INFORMBUF} .= join("\n", map { s/\n/ /gm; $_ } @data)."\n"; RemoveInternalTimer($ln); if(length($ntfy->{INFORMBUF}) > 1024) { FW_FlushInform($ln);