/** * Method returns the state source(s) result(s) (contains state value(s)) of the input powerState. * * @param powerState The PowerState. * @return state source(s) result(s) of the input state. */ private List<RdfNodeObject> powerStateSources(final PowerState powerState) { final List<RdfNodeObject> stateSources = new ArrayList<>(); final String powerStateVal = powerState.getValue().toString(); stateSources.add(new RdfNodeObject(new ArrayList<String>() {{add(powerStateVal);}}, false)); return stateSources; }
@Override protected void updateDynamicComponents() { try { logger.info("state: " + getProviderService().getPowerState().getValue().name()); switch (getProviderService().getPowerState().getValue()) { case ON: powerStatusLabel.setForeground(Color.BLACK); powerStatePanel.setBackground(Color.GREEN.darker()); powerButton.setText("Switch Off"); break; case OFF: powerStatusLabel.setForeground(Color.LIGHT_GRAY); powerStatePanel.setBackground(Color.GRAY.darker()); powerButton.setText("Switch On"); break; case UNKNOWN: powerStatusLabel.setForeground(Color.BLACK); powerStatePanel.setBackground(Color.ORANGE.darker()); powerButton.setText("Switch Off"); break; default: throw new InvalidStateException("State[" + getProviderService().getPowerState().getValue() + "] is unknown."); } powerStatusLabel.setText("Current PowerState = " + StringProcessor.transformUpperCaseToCamelCase(getProviderService().getPowerState().getValue().name())); } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(ex, logger); } } }
private Future setPowerState(final UnitRemote remote, final PowerState powerState) throws CouldNotPerformException { if (getPowerState(remote).getValue() == powerState.getValue()) { CompletableFuture completableFuture = new CompletableFuture(); completableFuture.complete(null); return completableFuture; } return (Future) Services.invokeOperationServiceMethod(ServiceType.POWER_STATE_SERVICE, remote, powerState); }
timeout.restart(); if (location.getPowerState(UnitType.COLORABLE_LIGHT).getValue() != State.ON || !isColorReached(location.getColor().getHsbColor(), COLOR_ORANGE)) { if (location.getPowerState(UnitType.LIGHT).getValue() == State.ON && (timeout == null || timeout.isExpired() || !timeout.isActive())) {
latestPowerStateTarget = PowerState.State.OFF; for (UnitRemote targetRemote : targetRemotes) { if (getPowerState(targetRemote).getValue() == PowerState.State.ON) { latestPowerStateTarget = PowerState.State.ON; break;
handleSourcePowerStateUpdate(((PowerState) data).getValue()); } catch (Exception ex) { ExceptionPrinter.printHistory(ex, logger); sourceRequestObserver = (final Observable<GeneratedMessage> source, GeneratedMessage data) -> { try { handleSourcePowerStateRequest(((PowerState) data).getValue()); } catch (Exception ex) { ExceptionPrinter.printHistory(ex, logger); targetObserver = (final Observable<GeneratedMessage> source, GeneratedMessage data) -> { try { handleTargetPowerStateUpdate(((PowerState) data).getValue()); } catch (Exception ex) { ExceptionPrinter.printHistory(ex, logger); targetRequestObserer = (final Observable<GeneratedMessage> source, GeneratedMessage data) -> { try { handleTargetPowerStateRequest(((PowerState) data).getValue()); } catch (Exception ex) { ExceptionPrinter.printHistory(ex, logger);
PowerState.State newState; try { switch (serviceRemote.getPowerState().getValue()) { case OFF: case UNKNOWN:
@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 handleTargetColorStateUpdate(final ColorState colorState, final UnitRemote colorableLightRemote) throws CouldNotPerformException { synchronized (AGENT_LOCK) { // if the color state changes turn source on before if (getPowerState(sourceRemote).getValue() != PowerState.State.ON) { final Future future = setPowerState(sourceRemote, ON); GlobalCachedExecutorService.submit(() -> { try { // wait for source remote to go on future.get(5, TimeUnit.SECONDS); // apply colorState again Services.invokeOperationServiceMethod(ServiceType.COLOR_STATE_SERVICE, colorableLightRemote, colorState); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); } catch (Exception ex) { ExceptionPrinter.printHistoryAndReturnThrowable(new CouldNotPerformException("Could not set color state after turning on source", ex), logger); } }); setPowerState(sourceRemote, ON); } } }
/** * Handle a new requested power state for a target remote. * * @param powerState The requested power state for the target remote. */ private void handleTargetPowerStateRequest(final PowerState.State powerState) { logger.debug("Handle new RequestedValue[" + powerState + "] for target"); synchronized (AGENT_LOCK) { try { // if on is requested on a target and the source is not yet on turn it on if (powerState == PowerState.State.ON && latestPowerStateTarget == PowerState.State.OFF) { if (getPowerState(sourceRemote).getValue() != PowerState.State.ON) { setPowerState(sourceRemote, ON); } } } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory("Could not handle target power state request!", ex, logger); } } }
private void powerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_powerButtonActionPerformed try { switch (getOperationService().getPowerState().getValue()) { case ON: notifyActionProcessing(getOperationService().setPowerState(OFF)); break; case OFF: case UNKNOWN: notifyActionProcessing(getOperationService().setPowerState(ON)); break; default: throw new InvalidStateException("State[" + getProviderService().getPowerState().getValue() + "] is unknown."); } } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not set power state!", ex), logger); } }//GEN-LAST:event_powerButtonActionPerformed
@Override public UnitGroupRemote newInstance(final UnitConfig unitGroupUnitConfig) throws org.openbase.jul.exception.InstantiationException, InterruptedException { try { UnitGroupRemote unitGroupRemote = Units.getUnit(unitGroupUnitConfig, false, Units.UNITGROUP); unitGroupRemote.addDataObserver((final Observable<UnitGroupData> source, UnitGroupData 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(unitGroupUnitConfig, ServiceType.COLOR_STATE_SERVICE)).build()); } if (data.hasPowerState()) { openHABRemote.postUpdate(OpenHABCommandFactory.newOnOffCommand(data.getPowerState().getValue()).setItem(generateItemId(unitGroupUnitConfig, ServiceType.POWER_STATE_SERVICE)).build()); } }); return unitGroupRemote; } catch (CouldNotPerformException ex) { throw new org.openbase.jul.exception.InstantiationException(LocationRemote.class, ex); } }
@Override public PowerState getPowerState(final UnitType unitType) throws NotAvailableException { PowerState.State powerStateValue = PowerState.State.OFF; long timestamp = 0; for (PowerStateOperationService service : getServices(unitType)) { if (!((UnitRemote) service).isDataAvailable()) { continue; } if (service.getPowerState().getValue() == PowerState.State.ON) { powerStateValue = PowerState.State.ON; } timestamp = Math.max(timestamp, service.getPowerState().getTimestamp().getTime()); } return TimestampProcessor.updateTimestamp(timestamp, PowerState.newBuilder().setValue(powerStateValue), TimeUnit.MICROSECONDS, logger).build(); }
@Override public Future<ActionFuture> setPowerState(final PowerState state) throws CouldNotPerformException { lastCommand = OpenHABCommandFactory.newOnOffCommand(state.getValue()); final Future future = executeCommand(lastCommand); if (autoRepeat) { repeatLastCommand(); } return future; } }