From c21a37f8bed6cdf139dd1a400f8413b6e8cc50cd Mon Sep 17 00:00:00 2001 From: markusbloch <> Date: Tue, 1 Nov 2016 16:58:54 +0000 Subject: [PATCH] Pushsafer: added device name to availableMessages readings (Forum: #59240) git-svn-id: https://svn.fhem.de/fhem/trunk@12486 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/70_Pushsafer.pm | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 35c0944c0..f63414170 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. + - changed: Pushsafer: added devicename to availableMessages reading name - feature: 98_Hyperion: new set toggleMode new attr hyperionToggleModes new german commandref diff --git a/fhem/FHEM/70_Pushsafer.pm b/fhem/FHEM/70_Pushsafer.pm index efef37b81..2ff0e27ee 100755 --- a/fhem/FHEM/70_Pushsafer.pm +++ b/fhem/FHEM/70_Pushsafer.pm @@ -363,14 +363,21 @@ sub Pushsafer_Callback($$$) { readingsBulkUpdate($hash, "lastSuccess", $1); } - - if($data =~ /available"?\s*:\s*{([^}]+)}/s) + + if($data =~ /available"?\s*:\s*{(.+)\s*}\s*}\s*$/gcs) { - my %devices = map { split(/:/, $_) } map { s/"//g; $_ } split(",", $1); + my %devices = grep { defined($_) } map { /^"?(\d+)"?:({.+})$/ ? ($1 => $2) : undef } split(",", $1); foreach my $dev (keys %devices) { - readingsBulkUpdate($hash, "availableMessages-$dev", $devices{$dev}); + if(defined($devices{$dev}) and $devices{$dev} =~ /^{\s*"?([^":]+)"?\s*:\s*"?([^":]+)"?\s*}$/) + { + my ($devname, $available) = ($1, $2); + + $devname =~ s/\s+//g; + + readingsBulkUpdate($hash, "availableMessages-$dev-$devname", $available); + } } } @@ -477,7 +484,7 @@ sub Pushsafer_Callback($$$) =end html @@ -574,7 +581,7 @@ sub Pushsafer_Callback($$$)