diff --git a/pom.xml b/pom.xml index 8aee4b9..f9901a5 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.bwssystems.HABridge ha-bridge - 3.1.0e + 3.1.0i jar HA Bridge diff --git a/src/main/java/com/bwssystems/HABridge/api/hue/HuePublicConfig.java b/src/main/java/com/bwssystems/HABridge/api/hue/HuePublicConfig.java index ac1b1b6..c955cf7 100644 --- a/src/main/java/com/bwssystems/HABridge/api/hue/HuePublicConfig.java +++ b/src/main/java/com/bwssystems/HABridge/api/hue/HuePublicConfig.java @@ -83,6 +83,7 @@ public class HuePublicConfig // } // else // bridgeId = bridgeId + "0800"; + bridgeId = bridgeId.toLowerCase(); return bridgeId; } diff --git a/src/main/java/com/bwssystems/HABridge/upnp/UpnpListener.java b/src/main/java/com/bwssystems/HABridge/upnp/UpnpListener.java index 7052416..3ed7b79 100644 --- a/src/main/java/com/bwssystems/HABridge/upnp/UpnpListener.java +++ b/src/main/java/com/bwssystems/HABridge/upnp/UpnpListener.java @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; import com.bwssystems.HABridge.BridgeControlDescriptor; import com.bwssystems.HABridge.BridgeSettingsDescriptor; import com.bwssystems.HABridge.Configuration; -// import com.bwssystems.HABridge.api.hue.HuePublicConfig; +import com.bwssystems.HABridge.api.hue.HuePublicConfig; import java.io.IOException; import java.net.*; @@ -24,6 +24,26 @@ public class UpnpListener { private boolean traceupnp; private BridgeControlDescriptor bridgeControl; private boolean discoveryTemplateLatest; + private String discoveryTemplate = "HTTP/1.1 200 OK\r\n" + + "CACHE-CONTROL: max-age=86400\r\n" + + "EXT:\r\n" + + "LOCATION: http://%s:%s/description.xml\r\n" + + "SERVER: Linux/3.14.0 UPnP/1.0 IpBridge/1.14.0\r\n" + + "ST: urn:schemas-upnp-org:device:basic:1\r\n" + + "USN: uuid:2f402f80-da50-11e1-9b23-%s\r\n\r\n"; +/* + private String discoveryTemplate = "NOTIFY * HTTP/1.1\r\n" + + "HOST: %s:%s\r\n" + + "CACHE-CONTROL: max-age=100\r\n" + + "LOCATION: http://%s:%s/description.xml\r\n" + + "SERVER: Linux/3.14.0 UPnP/1.0 IpBridge/1.14.0\r\n" + + "NTS: ssdp:alive\r\n" + + "hue-bridgeid: %s\r\n" + + "NT: uuid:2f402f80-da50-11e1-9b23-%s\r\n" + + "USN: uuid:2f402f80-da50-11e1-9b23-%s\r\n\r\n"; + discoveryResponse = String.format(discoveryTemplate, Configuration.UPNP_MULTICAST_ADDRESS, Configuration.UPNP_DISCOVERY_PORT, responseAddress, httpServerPort, bridgeIdMac, bridgeIdMac, bridgeIdMac); +*/ +/* private String discoveryTemplate = "HTTP/1.1 200 OK\r\n" + "CACHE-CONTROL: max-age=86400\r\n" + "EXT:\r\n" + @@ -31,6 +51,8 @@ public class UpnpListener { "SERVER: FreeRTOS/7.4.2 UPnP/1.0 IpBridge/1.10.0\r\n" + "ST: urn:schemas-upnp-org:device:basic:1\r\n" + "USN: uuid:2f402f80-da50-11e1-9b23-001788102201::urn:schemas-upnp-org:device:basic:1\r\n\r\n"; + discoveryResponse = String.format(discoveryTemplate, responseAddress, httpServerPort); +*/ /* private String discoveryTemplate = "HTTP/1.1 200 OK\r\n" + "CACHE-CONTROL: max-age=86400\r\n" + @@ -245,8 +267,11 @@ public class UpnpListener { protected void sendUpnpResponse(DatagramSocket socket, InetAddress requester, int sourcePort) throws IOException { String discoveryResponse = null; - if(discoveryTemplateLatest) - discoveryResponse = String.format(discoveryTemplate, responseAddress, httpServerPort); + String bridgeIdMac = null; + if(discoveryTemplateLatest) { + bridgeIdMac = HuePublicConfig.createConfig("temp", responseAddress).getBridgeid(); + discoveryResponse = String.format(discoveryTemplate, responseAddress, httpServerPort, bridgeIdMac); + } else discoveryResponse = String.format(discoveryTemplate091516, responseAddress, httpServerPort); if(traceupnp) { diff --git a/src/main/java/com/bwssystems/HABridge/upnp/UpnpSettingsResource.java b/src/main/java/com/bwssystems/HABridge/upnp/UpnpSettingsResource.java index fd705a3..789653c 100644 --- a/src/main/java/com/bwssystems/HABridge/upnp/UpnpSettingsResource.java +++ b/src/main/java/com/bwssystems/HABridge/upnp/UpnpSettingsResource.java @@ -4,6 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.bwssystems.HABridge.BridgeSettingsDescriptor; +import com.bwssystems.HABridge.api.hue.HuePublicConfig; import static spark.Spark.get; @@ -31,8 +32,8 @@ public class UpnpSettingsResource { + "Philips hue bridge 2015\n" + "BSB002\n" + "http://www.meethue.com\n" - + "0017880ae670\n" - + "uuid:2f402f80-da50-11e1-9b23-001788102201\n" + + "%s\n" + + "uuid:2f402f80-da50-11e1-9b23-%s\n" + "\n" + "\n" + "(null)\n" @@ -77,7 +78,8 @@ public class UpnpSettingsResource { log.debug("upnp device settings requested: " + " from " + request.ip() + ":" + request.port()); String portNumber = Integer.toString(request.port()); String filledTemplate = null; - filledTemplate = String.format(hueTemplate, theSettings.getUpnpConfigAddress(), portNumber, theSettings.getUpnpConfigAddress()); + String bridgeIdMac = HuePublicConfig.createConfig("temp", theSettings.getUpnpConfigAddress()).getBridgeid(); + filledTemplate = String.format(hueTemplate, theSettings.getUpnpConfigAddress(), portNumber, theSettings.getUpnpConfigAddress(), bridgeIdMac, bridgeIdMac); if(theSettings.isTraceupnp()) log.info("Traceupnp: upnp device settings template filled with address: " + theSettings.getUpnpConfigAddress() + " and port: " + portNumber); else