@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); } }
@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); } }
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; }
@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); } }
@Override protected Double convertFromImpl(PercentType source) { Double value = (double) (100 - source.intValue()) / 100; return value; }