final TemperatureState.DataUnit dataUnit = temperatureState.getTemperatureDataUnit(); double temperature; String temperatureVal; temperature = temperatureState.getTemperature(); temperatureVal = "\"" + String.valueOf(temperature) + "\"^^NS:Celsius"; stateSources.add(new RdfNodeObject(new ArrayList<String>() {{add(temperatureVal);}}, true)); break; case FAHRENHEIT: temperature = ((temperatureState.getTemperature() - OntConfig.FREEZING_POINT_FAHRENHEIT) / OntConfig.FAHRENHEIT_DIVISOR); temperatureVal = "\"" + String.valueOf(temperature) + "\"^^NS:Celsius"; stateSources.add(new RdfNodeObject(new ArrayList<String>() {{add(temperatureVal);}}, true)); break; case KELVIN: temperature = temperatureState.getTemperature() - OntConfig.ABSOLUTE_ZERO_POINT_CELSIUS; temperatureVal = "\"" + String.valueOf(temperature) + "\"^^NS:Celsius"; stateSources.add(new RdfNodeObject(new ArrayList<String>() {{add(temperatureVal);}}, true));
private void regulateHeater() { previousTemperatureState.clear(); try { for (TemperatureControllerRemote remote : locationRemote.getUnits(UnitType.TEMPERATURE_CONTROLLER, true, Units.TEMPERATURE_CONTROLLER)) { previousTemperatureState.put(remote, remote.getTargetTemperatureState()); } } catch (CouldNotPerformException | InterruptedException ex) { logger.error("Could not get all TemperatureControllerRemotes.", ex); } try { ActionDescriptionType.ActionDescription.Builder actionDescriptionBuilder = getNewActionDescription(ActionAuthorityType.ActionAuthority.getDefaultInstance(), ResourceAllocationType.ResourceAllocation.Initiator.SYSTEM, 1000 * 30, ResourceAllocationType.ResourceAllocation.Policy.FIRST, ResourceAllocationType.ResourceAllocation.Priority.NORMAL, locationRemote, TimestampProcessor.updateTimestampWithCurrentTime(TemperatureState.newBuilder().setTemperature(13.0).build()), UnitType.TEMPERATURE_CONTROLLER, ServiceTemplateType.ServiceTemplate.ServiceType.TARGET_TEMPERATURE_STATE_SERVICE, MultiResourceAllocationStrategyType.MultiResourceAllocationStrategy.Strategy.AT_LEAST_ONE); actionRescheduleHelper.startActionRescheduleing(locationRemote.applyAction(actionDescriptionBuilder.build()).get().toBuilder()); } catch (CouldNotPerformException | InterruptedException | ExecutionException ex) { logger.error("Could not set targetTemperatureState.", ex); } }
@Override public TemperatureState getTemperatureState(final UnitType unitType) throws NotAvailableException { Double average = 0d; Collection<TemperatureStateProviderService> temperatureStateProviderServices = getServices(unitType); int amount = temperatureStateProviderServices.size(); long timestamp = 0; for (TemperatureStateProviderService service : temperatureStateProviderServices) { if (!((UnitRemote) service).isDataAvailable()) { amount--; continue; } average += service.getTemperatureState().getTemperature(); timestamp = Math.max(timestamp, service.getTemperatureState().getTimestamp().getTime()); } average /= amount; return TimestampProcessor.updateTimestamp(timestamp, TemperatureState.newBuilder().setTemperature(average), TimeUnit.MICROSECONDS, logger).build(); } }
@Override public LocationRemote newInstance(final UnitConfig locationUnitConfig) throws org.openbase.jul.exception.InstantiationException, InterruptedException { try { LocationRemote locationRemote = Units.getUnit(locationUnitConfig, false, Units.LOCATION); locationRemote.addDataObserver((final Observable<LocationData> source, LocationData data) -> { // some locations do not have units for a given state so this state will not be set in LocationData and should not be updated in openhab if (data.hasColorState()) { openHABRemote.postUpdate(OpenHABCommandFactory.newHSBCommand(data.getColorState().getColor().getHsbColor()).setItem(generateItemId(locationUnitConfig, ServiceType.COLOR_STATE_SERVICE)).build()); } if (data.hasPowerState()) { openHABRemote.postUpdate(OpenHABCommandFactory.newOnOffCommand(data.getPowerState().getValue()).setItem(generateItemId(locationUnitConfig, ServiceType.POWER_STATE_SERVICE)).build()); } if (data.hasPowerConsumptionState()) { openHABRemote.postUpdate(OpenHABCommandFactory.newDecimalCommand(data.getPowerConsumptionState().getConsumption()).setItem(generateItemId(locationUnitConfig, ServiceType.POWER_CONSUMPTION_STATE_SERVICE)).build()); } if (data.hasMotionState()) { // post a 1 for motion and a 0 for no motion double number = data.getMotionState().getValue() == MotionStateType.MotionState.State.MOTION ? 1.0 : 0.0; openHABRemote.postUpdate(OpenHABCommandFactory.newDecimalCommand(number).setItem(generateItemId(locationUnitConfig, ServiceType.MOTION_STATE_SERVICE)).build()); } if (data.hasTemperatureState()) { openHABRemote.postUpdate(OpenHABCommandFactory.newDecimalCommand(data.getTemperatureState().getTemperature()).setItem(generateItemId(locationUnitConfig, ServiceType.TEMPERATURE_STATE_SERVICE)).build()); } }); return locationRemote; } catch (CouldNotPerformException ex) { throw new org.openbase.jul.exception.InstantiationException(LocationRemote.class, ex); } }
private void regulateTemperature() { previousTemperatureState.clear(); try { for (TemperatureControllerRemote remote : locationRemote.getUnits(UnitType.TEMPERATURE_CONTROLLER, true, Units.TEMPERATURE_CONTROLLER)) { previousTemperatureState.put(remote, remote.getTargetTemperatureState()); } } catch (CouldNotPerformException | InterruptedException ex) { logger.error("Could not get all TemperatureControllerRemotes.", ex); } try { ActionDescriptionType.ActionDescription.Builder actionDescriptionBuilder = getNewActionDescription(ActionAuthorityType.ActionAuthority.getDefaultInstance(), ResourceAllocationType.ResourceAllocation.Initiator.SYSTEM, 1000 * 30, ResourceAllocationType.ResourceAllocation.Policy.FIRST, ResourceAllocationType.ResourceAllocation.Priority.NORMAL, locationRemote, TimestampProcessor.updateTimestampWithCurrentTime(TemperatureState.newBuilder().setTemperature(13.0).build()), UnitType.TEMPERATURE_CONTROLLER, ServiceTemplateType.ServiceTemplate.ServiceType.TARGET_TEMPERATURE_STATE_SERVICE, MultiResourceAllocationStrategyType.MultiResourceAllocationStrategy.Strategy.AT_LEAST_ONE); actionRescheduleHelper.startActionRescheduleing(locationRemote.applyAction(actionDescriptionBuilder.build()).get().toBuilder()); } catch (CouldNotPerformException | InterruptedException | ExecutionException ex) { logger.error("Could not set targetTemperatureState.", ex); } }
@Override public TemperatureState getTargetTemperatureState(final UnitType unitType) throws NotAvailableException { Double average = 0d; Collection<TargetTemperatureStateOperationService> targetTemperatureStateOperationServices = getServices(unitType); int amount = targetTemperatureStateOperationServices.size(); long timestamp = 0; for (TargetTemperatureStateOperationService service : targetTemperatureStateOperationServices) { if (!((UnitRemote) service).isDataAvailable()) { amount--; continue; } average += service.getTargetTemperatureState().getTemperature(); timestamp = Math.max(timestamp, service.getTargetTemperatureState().getTimestamp().getTime()); } average /= amount; return TimestampProcessor.updateTimestamp(timestamp, TemperatureState.newBuilder().setTemperature(average), TimeUnit.MICROSECONDS, logger).build(); } }
public static TemperatureState transform(final double state) throws CouldNotTransformException { return TemperatureState.newBuilder().setTemperature(state).setTemperatureDataUnit(TemperatureState.DataUnit.CELSIUS).build(); }
public static double transform(final TemperatureState temperatureState) throws TypeNotSupportedException, CouldNotTransformException { return temperatureState.getTemperature(); } }
@Override public Future<ActionFuture> setTargetTemperatureState(final TemperatureState temperatureState) throws CouldNotPerformException { return executeCommand(OpenHABCommandFactory.newDecimalCommand(temperatureState.getTemperature())); }
/** * {@inheritDoc } * * @return {@inheritDoc } * @throws NotAvailableException {@inheritDoc } */ @Override protected TemperatureState getNextServiceState() throws NotAvailableException { return TemperatureState.newBuilder().setTemperatureDataUnit(TemperatureState.DataUnit.CELSIUS).setTemperature(getSimulatedTemperature()).build(); } }
private void setTargetTemperatureValueTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_setTargetTemperatureValueTextFieldActionPerformed try { double value = Double.parseDouble(setTargetTemperatureValueTextField.getText()); notifyActionProcessing(getOperationService().setTargetTemperatureState(TemperatureState.newBuilder().setTemperature(value).build())); } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not set target temperature!", ex), logger, LogLevel.ERROR); } }//GEN-LAST:event_setTargetTemperatureValueTextFieldActionPerformed
static void verifyTemperatureState(final TemperatureState temperatureState) throws VerificationFailedException { if (!temperatureState.hasTemperature()) { throw new VerificationFailedException("Temperature value unknown!"); } switch (temperatureState.getTemperatureDataUnit()) { case UNKNOWN: throw new VerificationFailedException("TemperatureState data unit unknown!"); default: return; } }
@Override protected void updateDynamicComponents() { try { temperatureValueLabel.setText(numberFormat.format(getProviderService().getTemperatureState().getTemperature()) + "° " + StringProcessor.transformUpperCaseToCamelCase(getProviderService().getTemperatureState().getTemperatureDataUnit().name())); } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(ex, logger, LogLevel.ERROR); } } }
@Override protected void updateDynamicComponents() { try { currentTargetTemperatureValueTextField.setText(numberFormat.format(getProviderService().getTargetTemperatureState().getTemperature())); dataUnitLabel1.setText(getProviderService().getTargetTemperatureState().getTemperatureDataUnit().name()); dataUnitLabel2.setText(getProviderService().getTargetTemperatureState().getTemperatureDataUnit().name()); } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(ex, logger, LogLevel.ERROR); } } }