use of org.eclipse.smarthome.core.thing.Thing in project smarthome by eclipse.
the class ThingResource method updateFirmware.
@PUT
@Path("/{thingUID}/firmware/{firmwareVersion}")
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Update thing firmware.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "OK"), @ApiResponse(code = 400, message = "Firmware update preconditions not satisfied."), @ApiResponse(code = 404, message = "Thing not found.") })
public Response updateFirmware(@HeaderParam(HttpHeaders.ACCEPT_LANGUAGE) @ApiParam(value = "language") String language, @PathParam("thingUID") @ApiParam(value = "thing") String thingUID, @PathParam("firmwareVersion") @ApiParam(value = "version") String firmwareVersion) throws IOException {
Thing thing = thingRegistry.get(new ThingUID(thingUID));
if (thing == null) {
return getThingNotFoundResponse(thingUID);
}
FirmwareUID firmwareUID = new FirmwareUID(thing.getThingTypeUID(), firmwareVersion);
try {
firmwareUpdateService.updateFirmware(thing.getUID(), firmwareUID, LocaleUtil.getLocale(language));
} catch (IllegalArgumentException | NullPointerException | IllegalStateException ex) {
return JSONResponse.createResponse(Status.BAD_REQUEST, null, "Firmware update preconditions not satisfied.");
}
return Response.status(Status.OK).build();
}
use of org.eclipse.smarthome.core.thing.Thing in project smarthome by eclipse.
the class CommunicationManager method receiveTrigger.
private void receiveTrigger(ChannelTriggeredEvent channelTriggeredEvent) {
final ChannelUID channelUID = channelTriggeredEvent.getChannel();
final String event = channelTriggeredEvent.getEvent();
final Thing thing = getThing(channelUID.getThingUID());
handleCallFromHandler(channelUID, thing, profile -> {
if (profile instanceof TriggerProfile) {
((TriggerProfile) profile).onTriggerFromHandler(event);
}
});
}
use of org.eclipse.smarthome.core.thing.Thing in project smarthome by eclipse.
the class CommunicationManager method handleEvent.
private <T extends Type> void handleEvent(String itemName, T type, String source, Function<@Nullable String, @Nullable List<Class<? extends T>>> acceptedTypesFunction, ProfileAction<T> action) {
final Item item = getItem(itemName);
if (item == null) {
logger.debug("Received an event for item {} which does not exist", itemName);
return;
}
itemChannelLinkRegistry.stream().filter(link -> {
// all links for the item
return link.getItemName().equals(itemName);
}).filter(link -> {
// make sure the command event is not sent back to its source
return !link.getLinkedUID().toString().equals(source);
}).forEach(link -> {
ChannelUID channelUID = link.getLinkedUID();
Thing thing = getThing(channelUID.getThingUID());
if (thing != null) {
Channel channel = thing.getChannel(channelUID.getId());
if (channel != null) {
@Nullable T convertedType = toAcceptedType(type, channel, acceptedTypesFunction);
if (convertedType != null) {
if (thing.getHandler() != null) {
Profile profile = getProfile(link, item, thing);
action.handle(profile, thing, convertedType);
}
} else {
logger.debug("Received event '{}' ({}) could not be converted to any type accepted by item '{}' ({})", type, type.getClass().getSimpleName(), itemName, item.getType());
}
} else {
logger.debug("Received event '{}' for non-existing channel '{}', not forwarding it to the handler", type, channelUID);
}
} else {
logger.debug("Received event '{}' for non-existing thing '{}', not forwarding it to the handler", type, channelUID.getThingUID());
}
});
}
use of org.eclipse.smarthome.core.thing.Thing in project smarthome by eclipse.
the class CommunicationManager method postCommand.
public void postCommand(ChannelUID channelUID, Command command) {
final Thing thing = getThing(channelUID.getThingUID());
handleCallFromHandler(channelUID, thing, profile -> {
if (profile instanceof StateProfile) {
((StateProfile) profile).onCommandFromHandler(command);
}
});
}
use of org.eclipse.smarthome.core.thing.Thing in project smarthome by eclipse.
the class ThingConfigDescriptionAliasProvider method getThingConfigDescriptionURI.
@Nullable
private URI getThingConfigDescriptionURI(URI uri) {
// First, get the thing type so we get the generic config descriptions
ThingUID thingUID = new ThingUID(uri.getSchemeSpecificPart());
Thing thing = thingRegistry.get(thingUID);
if (thing == null) {
return null;
}
ThingType thingType = thingTypeRegistry.getThingType(thing.getThingTypeUID());
if (thingType == null) {
return null;
}
// Get the config description URI for this thing type
URI configURI = thingType.getConfigDescriptionURI();
return configURI;
}
Aggregations