BindingType type = config.getBindingType();
// FIXME Currently filtering STATUS_CHANGE out for non-dimmer types b/c it's not working properly. Need to learn more.
if (type == BindingType.SWITCH
&& updateType == InsteonHubLevelUpdateType.STATUS_CHANGE) {
// switch => 0=OFF, else=ON
State update = level == 0 ? OnOffType.OFF : OnOffType.ON;
sendUpdate(config, update);
} else if (type == BindingType.DIMMER
&& updateType == InsteonHubLevelUpdateType.STATUS_CHANGE) {
// dimmer => 0-255 to percent
State update = new PercentType(levelToPercent(level));
sendUpdate(config, update);
} else if (type == BindingType.INPUT_ON_OFF
&& updateType == InsteonHubLevelUpdateType.STATUS_CHANGE) {
// on/off input => translate
Integer onValue = config.getOnValue();
Integer offValue = config.getOffValue();
State update = parseDigitalUpdate(level, onValue, offValue,
OnOffType.ON, OnOffType.OFF);
sendUpdate(config, update);
} else if (type == BindingType.INPUT_OPEN_CLOSED
&& updateType == InsteonHubLevelUpdateType.STATUS_CHANGE) {
// open/closed input => translate
Integer openValue = config.getOpenValue();
Integer closedValue = config.getClosedValue();
State update = parseDigitalUpdate(level, openValue,
closedValue, OpenClosedType.OPEN,
OpenClosedType.CLOSED);
sendUpdate(config, update);
} else if (type == BindingType.INPUT_UBYTE) {
// analog byte value => 0-255