Example #1
0
 @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);
   }
 }
Example #2
0
 @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);
   }
 }
Example #3
0
  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;
  }
Example #4
0
  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;
  }
Example #5
0
 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);
 }
Example #6
0
 @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);
   }
 }
Example #7
0
 @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;
 }