Search in sources :

Example 81 with ThingUID

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

the class ThingConsoleCommandExtension method execute.

@Override
public void execute(String[] args, Console console) {
    Collection<Thing> things = thingRegistry.getAll();
    if (args.length > 0) {
        String subCommand = args[0];
        switch(subCommand) {
            case SUBCMD_LIST:
                printThings(console, things);
                return;
            case SUBCMD_CLEAR:
                removeAllThings(console, things);
                return;
            case SUBCMD_REMOVE:
                if (args.length > 1) {
                    ThingUID thingUID = new ThingUID(args[1]);
                    removeThing(console, things, thingUID);
                } else {
                    console.println("Specify thing id to remove: things remove <thingUID> (e.g. \"hue:light:1\")");
                }
                return;
            case SUBCMD_TRIGGER:
                if (args.length == 3) {
                    triggerChannel(console, args[1], args[2]);
                } else if (args.length == 2) {
                    triggerChannel(console, args[1], null);
                } else {
                    console.println("Command '" + subCommand + "' needs arguments <channelUID> [<event>]");
                }
                break;
            default:
                break;
        }
    } else {
        printUsage(console);
    }
}
Also used : ThingUID(org.eclipse.smarthome.core.thing.ThingUID) Thing(org.eclipse.smarthome.core.thing.Thing)

Example 82 with ThingUID

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

the class FirmwareUpdateService method receive.

@Override
public void receive(Event event) {
    if (event instanceof ThingStatusInfoChangedEvent) {
        ThingStatusInfoChangedEvent changedEvent = (ThingStatusInfoChangedEvent) event;
        if (changedEvent.getStatusInfo().getStatus() != ThingStatus.ONLINE) {
            return;
        }
        ThingUID thingUID = changedEvent.getThingUID();
        FirmwareUpdateHandler firmwareUpdateHandler = getFirmwareUpdateHandler(thingUID);
        if (firmwareUpdateHandler != null && !firmwareStatusInfoMap.containsKey(thingUID)) {
            initializeFirmwareStatus(firmwareUpdateHandler);
        }
    }
}
Also used : ThingStatusInfoChangedEvent(org.eclipse.smarthome.core.thing.events.ThingStatusInfoChangedEvent) FirmwareUpdateHandler(org.eclipse.smarthome.core.thing.binding.firmware.FirmwareUpdateHandler) ThingUID(org.eclipse.smarthome.core.thing.ThingUID)

Example 83 with ThingUID

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

the class FirmwareUpdateService method cancelFirmwareUpdate.

/**
 * Cancels the firmware update of the thing having the given thing UID by invoking the operation
 * {@link FirmwareUpdateHandler#cancel()} of the thingĀ“s firmware update handler.
 *
 * @param thingUID the thing UID (must not be null)
 */
public void cancelFirmwareUpdate(final ThingUID thingUID) {
    Objects.requireNonNull(thingUID, "Thing UID must not be null.");
    final FirmwareUpdateHandler firmwareUpdateHandler = getFirmwareUpdateHandler(thingUID);
    if (firmwareUpdateHandler == null) {
        throw new IllegalArgumentException(String.format("There is no firmware update handler for thing with UID %s.", thingUID));
    }
    final ProgressCallbackImpl progressCallback = getProgressCallback(thingUID);
    logger.debug("Cancelling firmware update for thing with UID {}.", thingUID);
    safeCaller.create(firmwareUpdateHandler, FirmwareUpdateHandler.class).withTimeout(timeout).withAsync().onTimeout(() -> {
        logger.error("Timeout occurred while cancelling firmware update of thing with UID {}.", thingUID);
        progressCallback.failedInternal("timeout-error-during-cancel");
    }).onException(e -> {
        logger.error("Unexpected exception occurred while cancelling firmware update of thing with UID {}.", thingUID, e.getCause());
        progressCallback.failedInternal("unexpected-handler-error-during-cancel");
    }).withIdentifier(new Object()).build().cancel();
}
Also used : ScheduledFuture(java.util.concurrent.ScheduledFuture) URISyntaxException(java.net.URISyntaxException) ProgressCallback(org.eclipse.smarthome.core.thing.binding.firmware.ProgressCallback) LoggerFactory(org.slf4j.LoggerFactory) Firmware(org.eclipse.smarthome.core.thing.binding.firmware.Firmware) EventFilter(org.eclipse.smarthome.core.events.EventFilter) EventSubscriber(org.eclipse.smarthome.core.events.EventSubscriber) FirmwareUpdateBackgroundTransferHandler(org.eclipse.smarthome.core.thing.binding.firmware.FirmwareUpdateBackgroundTransferHandler) ThingStatusInfoChangedEvent(org.eclipse.smarthome.core.thing.events.ThingStatusInfoChangedEvent) Component(org.osgi.service.component.annotations.Component) FirmwareStatusInfo(org.eclipse.smarthome.core.thing.firmware.FirmwareStatusInfo) SafeCaller(org.eclipse.smarthome.core.common.SafeCaller) Locale(java.util.Locale) FirmwareUID(org.eclipse.smarthome.core.thing.binding.firmware.FirmwareUID) Map(java.util.Map) Thing(org.eclipse.smarthome.core.thing.Thing) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) Activate(org.osgi.service.component.annotations.Activate) URI(java.net.URI) FirmwareUpdateHandler(org.eclipse.smarthome.core.thing.binding.firmware.FirmwareUpdateHandler) ThreadPoolManager(org.eclipse.smarthome.core.common.ThreadPoolManager) TranslationProvider(org.eclipse.smarthome.core.i18n.TranslationProvider) ConfigValidationException(org.eclipse.smarthome.config.core.validation.ConfigValidationException) Logger(org.slf4j.Logger) ImmutableSet(com.google.common.collect.ImmutableSet) Deactivate(org.osgi.service.component.annotations.Deactivate) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) ConfigDescriptionValidator(org.eclipse.smarthome.config.core.validation.ConfigDescriptionValidator) EventPublisher(org.eclipse.smarthome.core.events.EventPublisher) ReferencePolicy(org.osgi.service.component.annotations.ReferencePolicy) Objects(java.util.Objects) TimeUnit(java.util.concurrent.TimeUnit) ReferenceCardinality(org.osgi.service.component.annotations.ReferenceCardinality) List(java.util.List) Modified(org.osgi.service.component.annotations.Modified) LocaleProvider(org.eclipse.smarthome.core.i18n.LocaleProvider) Event(org.eclipse.smarthome.core.events.Event) Reference(org.osgi.service.component.annotations.Reference) Collections(java.util.Collections) ThingStatus(org.eclipse.smarthome.core.thing.ThingStatus) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ThingUID(org.eclipse.smarthome.core.thing.ThingUID) FirmwareUpdateHandler(org.eclipse.smarthome.core.thing.binding.firmware.FirmwareUpdateHandler)

Example 84 with ThingUID

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

the class InboxResource method approve.

@POST
@Path("/{thingUID}/approve")
@Consumes(MediaType.TEXT_PLAIN)
@ApiOperation(value = "Approves the discovery result by adding the thing to the registry.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "OK"), @ApiResponse(code = 404, message = "Thing not found in the inbox."), @ApiResponse(code = 409, message = "No binding found that supports this thing.") })
public Response approve(@HeaderParam(HttpHeaders.ACCEPT_LANGUAGE) @ApiParam(value = "language") String language, @PathParam("thingUID") @ApiParam(value = "thingUID", required = true) String thingUID, @ApiParam(value = "thing label") String label) {
    ThingUID thingUIDObject = new ThingUID(thingUID);
    String notEmptyLabel = label != null && !label.isEmpty() ? label : null;
    Thing thing = null;
    try {
        thing = inbox.approve(thingUIDObject, notEmptyLabel);
    } catch (IllegalArgumentException e) {
        return JSONResponse.createErrorResponse(Status.NOT_FOUND, "Thing not found in inbox");
    }
    // inbox.approve returns null if no handler is found that supports this thing
    if (thing == null) {
        return JSONResponse.createErrorResponse(Status.CONFLICT, "No binding found that can create the thing");
    }
    return Response.ok(null, MediaType.TEXT_PLAIN).build();
}
Also used : ThingUID(org.eclipse.smarthome.core.thing.ThingUID) Thing(org.eclipse.smarthome.core.thing.Thing) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 85 with ThingUID

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

the class ThingResource method getByUID.

@GET
@RolesAllowed({ Role.ADMIN })
@Path("/{thingUID}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Gets thing by UID.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "OK", response = ThingDTO.class), @ApiResponse(code = 404, message = "Thing not found.") })
public Response getByUID(@HeaderParam(HttpHeaders.ACCEPT_LANGUAGE) @ApiParam(value = "language") String language, @PathParam("thingUID") @ApiParam(value = "thingUID") String thingUID) {
    final Locale locale = LocaleUtil.getLocale(language);
    Thing thing = thingRegistry.get((new ThingUID(thingUID)));
    // return Thing data if it does exist
    if (thing != null) {
        return getThingResponse(Status.OK, thing, locale, null);
    } else {
        return getThingNotFoundResponse(thingUID);
    }
}
Also used : Locale(java.util.Locale) ThingUID(org.eclipse.smarthome.core.thing.ThingUID) Thing(org.eclipse.smarthome.core.thing.Thing) Path(javax.ws.rs.Path) RolesAllowed(javax.annotation.security.RolesAllowed) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

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