Search in sources :

Example 91 with ThingUID

use of org.eclipse.smarthome.core.thing.ThingUID in project smarthome by eclipse.

the class HueBridgeNupnpDiscoveryOSGITest method validBridgesAreDiscovered.

@Test
public void validBridgesAreDiscovered() {
    List<DiscoveryResult> oldResults = inbox.stream().filter(forThingTypeUID(BRIDGE_THING_TYPE_UID)).collect(Collectors.toList());
    for (final DiscoveryResult oldResult : oldResults) {
        inbox.remove(oldResult.getThingUID());
    }
    sut = new ConfigurableBridgeNupnpDiscoveryMock();
    registerService(sut, DiscoveryService.class.getName());
    discoveryResult = validBridgeDiscoveryResult;
    final Map<ThingUID, DiscoveryResult> results = new HashMap<>();
    registerDiscoveryListener(new DiscoveryListener() {

        @Override
        public void thingDiscovered(DiscoveryService source, DiscoveryResult result) {
            results.put(result.getThingUID(), result);
        }

        @Override
        public void thingRemoved(DiscoveryService source, ThingUID thingUID) {
        }

        @Override
        public Collection<ThingUID> removeOlderResults(DiscoveryService source, long timestamp, Collection<ThingTypeUID> thingTypeUIDs, ThingUID bridgeUID) {
            return null;
        }
    });
    sut.startScan();
    waitForAssert(() -> {
        assertThat(results.size(), is(2));
        assertThat(results.get(BRIDGE_THING_UID_1), is(notNullValue()));
        checkDiscoveryResult(results.get(BRIDGE_THING_UID_1), ip1, sn1);
        assertThat(results.get(BRIDGE_THING_UID_2), is(notNullValue()));
        checkDiscoveryResult(results.get(BRIDGE_THING_UID_2), ip2, sn2);
        final List<DiscoveryResult> inboxResults = inbox.stream().filter(forThingTypeUID(BRIDGE_THING_TYPE_UID)).collect(Collectors.toList());
        assertTrue(inboxResults.size() >= 2);
        assertThat(inboxResults.stream().filter(result -> result.getThingUID().equals(BRIDGE_THING_UID_1)).findFirst().orElse(null), is(notNullValue()));
        assertThat(inboxResults.stream().filter(result -> result.getThingUID().equals(BRIDGE_THING_UID_2)).findFirst().orElse(null), is(notNullValue()));
    });
}
Also used : CoreMatchers(org.hamcrest.CoreMatchers) JavaOSGiTest(org.eclipse.smarthome.test.java.JavaOSGiTest) VolatileStorageService(org.eclipse.smarthome.test.storage.VolatileStorageService) Collection(java.util.Collection) DiscoveryService(org.eclipse.smarthome.config.discovery.DiscoveryService) InboxPredicates.forThingTypeUID(org.eclipse.smarthome.config.discovery.inbox.InboxPredicates.forThingTypeUID) IOException(java.io.IOException) HashMap(java.util.HashMap) Test(org.junit.Test) Collectors(java.util.stream.Collectors) List(java.util.List) DiscoveryListener(org.eclipse.smarthome.config.discovery.DiscoveryListener) Inbox(org.eclipse.smarthome.config.discovery.inbox.Inbox) Map(java.util.Map) HueBindingConstants(org.eclipse.smarthome.binding.hue.HueBindingConstants) ThingTypeUID(org.eclipse.smarthome.core.thing.ThingTypeUID) Assert(org.junit.Assert) DiscoveryResult(org.eclipse.smarthome.config.discovery.DiscoveryResult) ThingUID(org.eclipse.smarthome.core.thing.ThingUID) Before(org.junit.Before) HashMap(java.util.HashMap) DiscoveryResult(org.eclipse.smarthome.config.discovery.DiscoveryResult) ThingUID(org.eclipse.smarthome.core.thing.ThingUID) Collection(java.util.Collection) InboxPredicates.forThingTypeUID(org.eclipse.smarthome.config.discovery.inbox.InboxPredicates.forThingTypeUID) ThingTypeUID(org.eclipse.smarthome.core.thing.ThingTypeUID) DiscoveryService(org.eclipse.smarthome.config.discovery.DiscoveryService) DiscoveryListener(org.eclipse.smarthome.config.discovery.DiscoveryListener) JavaOSGiTest(org.eclipse.smarthome.test.java.JavaOSGiTest) Test(org.junit.Test)

Example 92 with ThingUID

use of org.eclipse.smarthome.core.thing.ThingUID in project smarthome by eclipse.

the class HueBridgeDiscoveryParticipantOSGITest method validDiscoveryResult.

@Test
public void validDiscoveryResult() {
    final DiscoveryResult result = discoveryParticipant.createResult(hueDevice);
    assertThat(result.getFlag(), is(DiscoveryResultFlag.NEW));
    assertThat(result.getThingUID(), is(new ThingUID("hue:bridge:serial123")));
    assertThat(result.getThingTypeUID(), is(THING_TYPE_BRIDGE));
    assertThat(result.getBridgeUID(), is(nullValue()));
    assertThat(result.getProperties().get(HOST), is("1.2.3.4"));
    assertThat(result.getProperties().get(SERIAL_NUMBER), is("serial123"));
    assertThat(result.getRepresentationProperty(), is(SERIAL_NUMBER));
}
Also used : DiscoveryResult(org.eclipse.smarthome.config.discovery.DiscoveryResult) ThingUID(org.eclipse.smarthome.core.thing.ThingUID) JavaOSGiTest(org.eclipse.smarthome.test.java.JavaOSGiTest) Test(org.junit.Test)

Example 93 with ThingUID

use of org.eclipse.smarthome.core.thing.ThingUID in project smarthome by eclipse.

the class FSInternetRadioDiscoveryParticipant method getThingUID.

/**
 * If <code>device</code> is a supported device, a unique thing ID (e.g. serial number) must be returned. Further
 * supported devices should be added here, based on the available UPnP information.
 */
@Override
public ThingUID getThingUID(RemoteDevice device) {
    final DeviceDetails details = device.getDetails();
    if (details != null) {
        final ManufacturerDetails manufacturerDetails = details.getManufacturerDetails();
        final String manufacturer = manufacturerDetails == null ? null : manufacturerDetails.getManufacturer();
        final ModelDetails modelDetails = details.getModelDetails();
        if (modelDetails != null) {
            // check manufacturer and model number
            final String modelNumber = modelDetails.getModelNumber();
            if (modelNumber != null) {
                if (manufacturer != null) {
                    final Set<String> supportedRadios = SUPPORTED_RADIO_MODELS.get(manufacturer.trim().toUpperCase());
                    if (supportedRadios != null && supportedRadios.contains(modelNumber.toUpperCase())) {
                        return new ThingUID(THING_TYPE_RADIO, details.getSerialNumber());
                    }
                }
                // check model name and number
                final String modelName = modelDetails.getModelName();
                if (modelName != null) {
                    final Set<String> supportedRadios = SUPPORTED_RADIO_MODELS.get(modelName.trim().toUpperCase());
                    if (supportedRadios != null && supportedRadios.contains(modelNumber.toUpperCase())) {
                        return new ThingUID(THING_TYPE_RADIO, details.getSerialNumber());
                    }
                }
            }
        }
    // maybe we can add further indicators, whether the device is a supported one
    }
    // device not supported
    return null;
}
Also used : DeviceDetails(org.jupnp.model.meta.DeviceDetails) ModelDetails(org.jupnp.model.meta.ModelDetails) ThingUID(org.eclipse.smarthome.core.thing.ThingUID) ManufacturerDetails(org.jupnp.model.meta.ManufacturerDetails)

Example 94 with ThingUID

use of org.eclipse.smarthome.core.thing.ThingUID in project smarthome by eclipse.

the class HueBridgeDiscoveryParticipant method createResult.

@Override
@Nullable
public DiscoveryResult createResult(RemoteDevice device) {
    ThingUID uid = getThingUID(device);
    if (uid != null) {
        Map<String, Object> properties = new HashMap<>(2);
        properties.put(HOST, device.getDetails().getBaseURL().getHost());
        properties.put(SERIAL_NUMBER, device.getDetails().getSerialNumber());
        DiscoveryResult result = DiscoveryResultBuilder.create(uid).withProperties(properties).withLabel(device.getDetails().getFriendlyName()).withRepresentationProperty(SERIAL_NUMBER).build();
        return result;
    } else {
        return null;
    }
}
Also used : DiscoveryResult(org.eclipse.smarthome.config.discovery.DiscoveryResult) HashMap(java.util.HashMap) ThingUID(org.eclipse.smarthome.core.thing.ThingUID) Nullable(org.eclipse.jdt.annotation.Nullable)

Example 95 with ThingUID

use of org.eclipse.smarthome.core.thing.ThingUID in project smarthome by eclipse.

the class HueLightDiscoveryService method getThingUID.

@Nullable
private ThingUID getThingUID(FullLight light) {
    ThingUID bridgeUID = hueBridgeHandler.getThing().getUID();
    ThingTypeUID thingTypeUID = getThingTypeUID(light);
    if (thingTypeUID != null && getSupportedThingTypes().contains(thingTypeUID)) {
        return new ThingUID(thingTypeUID, bridgeUID, light.getId());
    } else {
        return null;
    }
}
Also used : ThingUID(org.eclipse.smarthome.core.thing.ThingUID) ThingTypeUID(org.eclipse.smarthome.core.thing.ThingTypeUID) Nullable(org.eclipse.jdt.annotation.Nullable)

Aggregations

ThingUID (org.eclipse.smarthome.core.thing.ThingUID)99 DiscoveryResult (org.eclipse.smarthome.config.discovery.DiscoveryResult)29 ThingTypeUID (org.eclipse.smarthome.core.thing.ThingTypeUID)27 Thing (org.eclipse.smarthome.core.thing.Thing)26 Test (org.junit.Test)25 HashMap (java.util.HashMap)21 JavaOSGiTest (org.eclipse.smarthome.test.java.JavaOSGiTest)14 ApiOperation (io.swagger.annotations.ApiOperation)10 ApiResponses (io.swagger.annotations.ApiResponses)10 Path (javax.ws.rs.Path)9 JsonObject (com.google.gson.JsonObject)8 JsonParser (com.google.gson.JsonParser)7 RolesAllowed (javax.annotation.security.RolesAllowed)7 Locale (java.util.Locale)6 Nullable (org.eclipse.jdt.annotation.Nullable)6 Consumes (javax.ws.rs.Consumes)5 Configuration (org.eclipse.smarthome.config.core.Configuration)5 Collection (java.util.Collection)4 GET (javax.ws.rs.GET)4 InboxPredicates.forThingUID (org.eclipse.smarthome.config.discovery.inbox.InboxPredicates.forThingUID)4