diff --git a/fhem/FHEM/98_UbiquitiMP.pm b/fhem/FHEM/98_UbiquitiMP.pm index 9d380a9f2..c0cd9df27 100644 --- a/fhem/FHEM/98_UbiquitiMP.pm +++ b/fhem/FHEM/98_UbiquitiMP.pm @@ -21,7 +21,7 @@ # ################################################################ # Changelog: -# 25.3.15 add force for set on and off +# 25.03.15 add force for set on and off # 10.04.15 add enable/disable # 18.04.15 add toggle # 20.04.15 add Groups @@ -29,6 +29,7 @@ # 23.04.15 add Set Extensions for 1 Port Ubi , change Client to UbiquitiOut, # 25.06.15 add german docu, fix some timing problems # 02.05.15 fix groupPorts change at runtime +# 19.05.17 change decode_json package main; @@ -40,6 +41,7 @@ use Blocking; # http://www.fhemwiki.de/wiki/Blocking_Call use SetExtensions; use Net::Telnet; use JSON; +#use Data::Dumper; my %sets = (); my $setcmds = "on,off,toggle,enable,disable,lock,unlock,reset"; @@ -547,11 +549,24 @@ sub UbiquitiMP_Status($$@) my $sum_energy; my @ener; - my $json = (); - $json = JSON->new->utf8(0)->decode($js); + #my $json = (); + #my %json = JSON->new->utf8(0)->decode($js); + my $json = eval{decode_json($js)}; - my $sensors = scalar keys $json->{sensors}; + if($@) + { + Log3 $name, 2, "$name, error decode JSON: ".$@; + readingsSingleUpdate($hash, "state", "error", 1); + return undef; + } + my $sensors = 0; # es gibt z.Z. in Deutschland nur die Ausführungen mit 1,3 & 6 Port + $sensors = 1 if defined($json->{sensors}[0]); + $sensors = 3 if defined($json->{sensors}[2]); + $sensors = 6 if defined($json->{sensors}[5]); + + Log3 $name, 2, "$name - sensors : $sensors"; + if ((!$hash->{PORTS}) && ($sensors > 0)) # nur einmal zu Begin bzw nach reload { $hash->{PORTS} = $sensors; @@ -580,8 +595,7 @@ sub UbiquitiMP_Status($$@) my $lock = $json->{sensors}[$i]{lock}; my $label = $json->{sensors}[$i]{label}; my $enabled = $json->{sensors}[$i]{enabled}; # wann wird das angefasst ? - my $energy = (defined($ener[$i])) ? sprintf("%.2f",$ener[$i]*0.3125) : 0; - $energy += 0; + my $energy = (defined($ener[$i])) ? sprintf("%.2f",$ener[$i]*0.3125) : 0; $energy += 0; #kW/h my $eState ="E:$energy P:$power I:$current U:$voltage i:$powerfactor"; @@ -724,7 +738,7 @@ sub UbiquitiMP_Info($$) $hash->{BNAME} = $val if ($var eq "board.name"); $hash->{SNAME} = $val if ($var eq "board.shortname"); $hash->{VERSION} = $val if ($var eq "version"); - $hash->{MAC} = $val if ($var eq "board.hwaddr"); + $hash->{MAC} = lc($val) if ($var eq "board.hwaddr"); } if (($board_id) && (!$hash->{PORTS})) @@ -910,27 +924,27 @@ sub UbiquitiMP_createSets($) 1; =pod +=item device +=item summary controls Ubiquiti mPower 1 to 6 port WLAN switches +=item summary_DE steuert Ubiquiti mPower 1-6 Port WLAN Schaltsteckdosen =begin html

UbiquitiMP