diff --git a/fhem/CHANGED b/fhem/CHANGED index 15f61a991..5d974e69f 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,6 +1,7 @@ # Add changes at the top of the list. - SVN + - change: 30_HUEDevice: allow autodetection of bridge with hue portal services - feature: THRESHOLD Module by Damian - change: 30_HUEDevice: use new devStateIcon feature to show device color in room overview diff --git a/fhem/FHEM/30_HUEBridge.pm b/fhem/FHEM/30_HUEBridge.pm index 1dffe4181..660a44e0f 100644 --- a/fhem/FHEM/30_HUEBridge.pm +++ b/fhem/FHEM/30_HUEBridge.pm @@ -44,10 +44,30 @@ sub HUEBridge_Define($$) my @args = split("[ \t]+", $def); - return "Usage: define HUEBridge [interval]" if(@args < 3); + return "Usage: define HUEBridge [] [interval]" if(@args < 2); my ($name, $type, $host, $interval) = @args; + if( !defined($host) ) { + my $ret = HUEBridge_HTTP_Request(0,"http://www.meethue.com/api/nupnp","GET",undef,undef,undef); + + if( defined($ret) && $ret ne '' ) + { + my $obj = decode_json($ret); + + if( defined($obj->[0]) + && defined($obj->[0]->{'internalipaddress'}) ) { + } + $host = $obj->[0]->{'internalipaddress'}; + } + + if( !defined($host) ) { + return 'error detecting bridge.'; + } + + $hash->{DEF} = $host; + } + $interval= 300 unless defined($interval); if( $interval < 60 ) { $interval = 60; } @@ -142,7 +162,7 @@ HUEBridge_Get($@) { my ($hash, $name, $cmd) = @_; - return "$name: get needs at least one parameter" if( !defined($cmd) ); + return "$name: get needs at least one parameter" if( !defined($cmd) ); # usage check if($cmd eq 'devices') { @@ -434,13 +454,17 @@ HUEBridge_HTTP_Request($$$@) Define
    - define <name> HUEBridge <host> [<interval>]
    + define <name> HUEBridge [<host>] [<interval>]

    Defines a HUEBridge device with address <host>.

    + If [<host>] is not given the module will try to autodetect the bridge with the hue portal services.

    + The bridge status will be updated every <interval> seconds. The default and minimum is 60.

    + After a new bridge is created the pair button on the bridge has to be pressed.

    + Examples:
      define bridge HUEBridge 10.0.1.1