@Override public void handleCommand(InsteonPLMBindingConfig conf, Command cmd, InsteonDevice dev) { try { PercentType pc = (PercentType) cmd; double ramptime = getRampTime(conf, 0); int level = pc.intValue(); if (level > 0) { // make light on message with given level level = getMaxLightLevel(conf, level); byte cmd2 = encode(ramptime, level); Msg m = dev.makeStandardMessage((byte) 0x0f, getOnCmd(), (byte) cmd2); dev.enqueueMessage(m, m_feature); logger.info( "{}: sent msg to set {} to {} with {} second ramp time.", nm(), dev.getAddress(), level, ramptime); } else { // switch off Msg m = dev.makeStandardMessage((byte) 0x0f, getOffCmd(), (byte) 0x00); dev.enqueueMessage(m, m_feature); logger.info( "{}: sent msg to set {} to zero by switching off with {} ramp time.", nm(), dev.getAddress(), ramptime); } } catch (IOException e) { logger.error("{}: command send i/o error: ", nm(), e); } catch (FieldException e) { logger.error("{}: command send message creation error ", nm(), e); } }
@Override public void handleCommand(InsteonPLMBindingConfig conf, Command cmd, InsteonDevice dev) { try { // // I did not have hardware that would respond to the PRESET_DIM codes. // This code path needs testing. // byte houseCode = dev.getX10HouseCode(); byte houseUnitCode = (byte) (houseCode << 4 | dev.getX10UnitCode()); Msg munit = dev.makeX10Message(houseUnitCode, (byte) 0x00); // send unit code dev.enqueueMessage(munit, m_feature); PercentType pc = (PercentType) cmd; logger.debug("{}: changing level of {} to {}", nm(), dev.getAddress(), pc.intValue()); int level = (pc.intValue() * 32) / 100; byte cmdCode = (level >= 16) ? X10.Command.PRESET_DIM_2.code() : X10.Command.PRESET_DIM_1.code(); level = level % 16; if (level <= 0) level = 0; houseCode = (byte) s_X10CodeForLevel[level]; cmdCode |= (houseCode << 4); Msg mcmd = dev.makeX10Message(cmdCode, (byte) 0x80); // send command code dev.enqueueMessage(mcmd, m_feature); } catch (IOException e) { logger.error("{}: command send i/o error: ", nm(), e); } catch (FieldException e) { logger.error("{}: command send message creation error ", nm(), e); } }
private String getProgressCommand(PlexBindingConfig config, Command command) { PlexSession session = getSessionByMachineId(config.getMachineIdentifier()); String url = null; if (session != null) { int offset = 0; if (command.getClass().equals(PercentType.class)) { PercentType percent = (PercentType) command; offset = new BigDecimal(session.getDuration()) .multiply( percent .toBigDecimal() .divide(new BigDecimal("100"), new MathContext(5, RoundingMode.HALF_UP))) .intValue(); offset = Math.max(0, offset); offset = Math.min(session.getDuration(), offset); url = String.format("playback/seekTo?offset=%d", offset); } else if (command.getClass().equals(IncreaseDecreaseType.class)) { if (command.equals(IncreaseDecreaseType.DECREASE)) { url = PlexProperty.STEP_BACK.getName(); } else { url = PlexProperty.STEP_FORWARD.getName(); } } } return url; }
private String getVolumeCommand(PlexBindingConfig config, Command command) { int newVolume = 100; PlexSession session = getSessionByMachineId(config.getMachineIdentifier()); if (session != null) { newVolume = session.getVolume(); } if (command.getClass().equals(PercentType.class)) { PercentType percentType = (PercentType) command; newVolume = percentType.intValue(); } else if (command.getClass().equals(IncreaseDecreaseType.class)) { if (command.equals(IncreaseDecreaseType.DECREASE)) { newVolume = Math.max(0, newVolume - VOLUME_STEP); } else { newVolume = Math.min(100, newVolume + VOLUME_STEP); } } if (session != null) { session.setVolume(newVolume); callback.updateReceived(session); } String url = String.format("playback/setParameters?volume=%d", newVolume); return url; }
private static FS20Command convertPercentType(PercentType percentType) { double percentValue = percentType.doubleValue(); int step = (int) (percentValue / 6.25); String hexValue = Integer.toHexString(step); if (hexValue.length() == 1) { hexValue = "0" + hexValue; } return FS20Command.getFromHexValue(hexValue); }
@Override public void handleCommand(InsteonPLMBindingConfig conf, Command cmd, InsteonDevice dev) { try { PercentType pc = (PercentType) cmd; logger.debug("changing level of {} to {}", dev.getAddress(), pc.intValue()); int level = (int) Math.ceil((pc.intValue() * 255.0) / 100); // round up if (level > 0) { // make light on message with given level level = getMaxLightLevel(conf, level); Msg m = dev.makeStandardMessage((byte) 0x0f, (byte) 0x11, (byte) level); dev.enqueueMessage(m, m_feature); logger.info("{}: sent msg to set {} to {}", nm(), dev.getAddress(), level); } else { // switch off Msg m = dev.makeStandardMessage((byte) 0x0f, (byte) 0x13, (byte) 0x00); dev.enqueueMessage(m, m_feature); logger.info("{}: sent msg to set {} to zero by switching off", nm(), dev.getAddress()); } } catch (IOException e) { logger.error("{}: command send i/o error: ", nm(), e); } catch (FieldException e) { logger.error("{}: command send message creation error ", nm(), e); } }
@ActionDoc(text = "sets the master volume of the host") public static void setMasterVolume(@ParamDoc(name = "percent") final PercentType percent) throws IOException { setMasterVolume(percent.toBigDecimal().floatValue() / 100f); }
@Override protected Double convertFromImpl(PercentType source) { Double value = (double) (100 - source.intValue()) / 100; return value; }