diff --git a/fhem/FHEM/00_FBAHAHTTP.pm b/fhem/FHEM/00_FBAHAHTTP.pm index 91b83d437..b063b03d2 100644 --- a/fhem/FHEM/00_FBAHAHTTP.pm +++ b/fhem/FHEM/00_FBAHAHTTP.pm @@ -72,7 +72,8 @@ FBAHAHTTP_Poll($) return $dr->("MISSING: set $name password") if(!$fb_pw); my $sid = FB_doCheckPW($hash->{DEF}, $fb_user, $fb_pw); - return $dr->("ERROR: cannot get SID, check hostname/fritzbox-user/password") + return $dr->("$name error: cannot get SID, ". + "check connection/hostname/fritzbox-user/password") if(!$sid); $hash->{".SID"} = $sid; $hash->{STATE} = "connected"; @@ -91,19 +92,15 @@ FBAHAHTTP_Poll($) return; } + Log 1, $_[2] if(AttrVal($name, "verbose", 1) > 4); if($_[2] !~ m,^$,s) { Log3 $name, 3, "$name: unexpected reply from device: $_[2]"; delete $hash->{".SID"}; return; } - $_[2] =~ s,,,; - - my @a = split("+ + Dispatch($hash, "<$1 $2", undef)+gse; # Quick&Hack } }); diff --git a/fhem/FHEM/10_FBDECT.pm b/fhem/FHEM/10_FBDECT.pm index 10c1a5ad9..6b306f346 100644 --- a/fhem/FHEM/10_FBDECT.pm +++ b/fhem/FHEM/10_FBDECT.pm @@ -217,20 +217,21 @@ my %fbhttp_readings = ( state => '"state:".($val?"on":"off")', tist => 'sprintf("temperature:%.1f C (measured)", $val/2)', tsoll => 'sprintf("desired-temp:%.1f C", $val/2)', + members => '"members:$val"', ); sub -FBDECT_ParseHttp($$) +FBDECT_ParseHttp($$$) { - my ($iodev, $msg, $local) = @_; + my ($iodev, $msg, $type) = @_; my $ioName = $iodev->{NAME}; my %h; $msg =~ s,<([^/>]+?)>([^<]+?)<,$h{$1}=$2,ge; # Quick & Dirty: Tags - $msg =~ s, ([a-z]+?)="([^"]+)",$h{$1}=$2,ge; # Quick & Dirty: Attributes + $msg =~ s, ([a-z]+?)="([^"]*)",$h{$1}=$2,ge; # Quick & Dirty: Attributes my $ain = $h{identifier}; - $ain =~ s/[: ]/_/g; + $ain =~ s/[-: ]/_/g; my %ll = (6=>"actuator", 7=>"powerMeter", 8=>"tempSensor", 9=>"switch", 10=>"repeater"); @@ -259,6 +260,7 @@ FBDECT_ParseHttp($$) Log3 $hash, 5, " $n = $h{$n}"; next if(!$fbhttp_readings{$n}); my $val = $h{$n}; + $val = $type if($n eq "productname" && $val eq ""); my ($ptyp,$pyld) = split(":", eval $fbhttp_readings{$n}, 2); readingsBulkUpdate($hash, $ptyp, $pyld); readingsBulkUpdate($hash, "state", "desired-temp: ".($val/2)) @@ -275,9 +277,9 @@ FBDECT_Parse($$@) { my ($iodev, $msg, $local) = @_; - my $mt = substr($msg, 0, 2); - return FBDECT_ParseHttp($iodev, $msg) if($mt eq "{NAME}; if($mt ne "07" && $mt ne "04") { Log3 $ioName, 1, "FBDECT: unknown message type $mt";