use of org.openhab.model.item.binding.BindingConfigParseException in project openhab1-addons by openhab.
the class SallegraGenericBindingProvider method processBindingConfiguration.
/**
* {@inheritDoc}
*
* [deviceId:command:value]
*
*/
@Override
public void processBindingConfiguration(String context, Item item, String bindingConfig) throws BindingConfigParseException {
super.processBindingConfiguration(context, item, bindingConfig);
if (bindingConfig == null || item == null) {
logger.error("invalid null input, item={}, bindingConfig={}", item, bindingConfig);
return;
}
/*
* remove unnecessary chars
*/
String strippedBindingConfig = bindingConfig.replace("[", "").replace("]", "").trim();
/*
* get configpart
*/
String[] configpart = strippedBindingConfig.split(":");
SallegraBindingConfig config = null;
/*
* check for valid command
*/
if (configpart.length == 3) {
SallegraCommand cmdId = null;
try {
cmdId = SallegraCommand.valueOf(configpart[1].toUpperCase());
} catch (IllegalArgumentException e) {
throw new BindingConfigParseException("Unknown command: " + configpart[1]);
}
config = new SallegraBindingConfig(configpart[0], cmdId, configpart[2]);
config.setItem(item.getName());
} else {
throw new BindingConfigParseException("Configuration must have at at least 2 or 3 configpart separated by ':'");
}
logger.debug("Found \"{}\" binding config for deviceId \"{}\". Command is \"{}\" and value is \"{}\"", configpart[0], configpart[1], configpart.length > 2 ? configpart[2] : "-");
addBindingConfig(item, config);
}
use of org.openhab.model.item.binding.BindingConfigParseException in project openhab1-addons by openhab.
the class SamsungTvGenericBindingProvider method parseBindingConfig.
protected void parseBindingConfig(String bindingConfigs, SamsungTvBindingConfig config) throws BindingConfigParseException {
String bindingConfig = StringUtils.substringBefore(bindingConfigs, ",");
String bindingConfigTail = StringUtils.substringAfter(bindingConfigs, ",");
String[] configParts = bindingConfig.trim().split(":");
if (configParts.length != 3) {
throw new BindingConfigParseException("Samsung TV binding must contain three parts separated by ':'");
}
String command = StringUtils.trim(configParts[0]);
String tvId = StringUtils.trim(configParts[1]);
String tvCommand = StringUtils.trim(configParts[2]);
Key key = Key.valueOf(tvCommand);
if (key == null) {
throw new BindingConfigParseException("Unregonized value '" + tvCommand + "'");
}
// if there are more commands to parse do that recursively ...
if (StringUtils.isNotBlank(bindingConfigTail)) {
parseBindingConfig(bindingConfigTail, config);
}
config.put(command, tvId + ":" + tvCommand);
}
use of org.openhab.model.item.binding.BindingConfigParseException in project openhab1-addons by openhab.
the class EcobeeGenericBindingProvider method processBindingConfiguration.
/**
* {@inheritDoc}
*/
@Override
public void processBindingConfiguration(final String context, final Item item, final String bindingConfig) throws BindingConfigParseException {
logger.debug("Processing binding configuration: '{}'", bindingConfig);
super.processBindingConfiguration(context, item, bindingConfig);
boolean inBound = false;
boolean outBound = false;
if (bindingConfig.startsWith(IN_BOUND)) {
inBound = true;
} else if (bindingConfig.startsWith(OUT_BOUND)) {
outBound = true;
} else if (bindingConfig.startsWith(BIDIRECTIONAL)) {
inBound = true;
outBound = true;
} else {
throw new BindingConfigParseException("Item \"" + item.getName() + "\" does not start with " + IN_BOUND + ", " + OUT_BOUND + " or " + BIDIRECTIONAL + ".");
}
Matcher matcher = CONFIG_PATTERN.matcher(bindingConfig);
if (!matcher.matches() || matcher.groupCount() != 2) {
throw new BindingConfigParseException("Config for item '" + item.getName() + "' could not be parsed.");
}
String userid = null;
String thermostatIdentifier = matcher.group(1);
if (thermostatIdentifier.contains(".")) {
String[] parts = thermostatIdentifier.split("\\.");
userid = parts[0];
thermostatIdentifier = parts[1];
}
if (inBound && !Selection.isThermostatIdentifier(thermostatIdentifier)) {
throw new BindingConfigParseException("Only a single thermostat identifier is permitted in an in binding or bidirectional binding.");
}
String property = matcher.group(2);
EcobeeBindingConfig config = new EcobeeBindingConfig(userid, thermostatIdentifier, property, inBound, outBound);
addBindingConfig(item, config);
}
use of org.openhab.model.item.binding.BindingConfigParseException in project openhab1-addons by openhab.
the class EcobeeGenericBindingProvider method validateItemType.
/**
* {@inheritDoc}
*/
@Override
public void validateItemType(Item item, String bindingConfig) throws BindingConfigParseException {
logger.trace("validateItemType called with bindingConfig={}", bindingConfig);
Matcher matcher = CONFIG_PATTERN.matcher(bindingConfig);
if (!matcher.matches() || matcher.groupCount() != 2) {
throw new BindingConfigParseException("Config for item '" + item.getName() + "' could not be parsed.");
}
String property = matcher.group(2);
logger.trace("validateItemType called with property={}", property);
}
use of org.openhab.model.item.binding.BindingConfigParseException in project openhab1-addons by openhab.
the class EnergenieGenericBindingProvider method processBindingConfiguration.
/**
* {@inheritDoc}
*/
@Override
public void processBindingConfiguration(String context, Item item, String bindingConfig) throws BindingConfigParseException {
super.processBindingConfiguration(context, item, bindingConfig);
try {
if (bindingConfig != null) {
String[] configParts = bindingConfig.split(";");
if (configParts.length < 2 || configParts.length > 2) {
throw new BindingConfigParseException("energenie binding configuration must have 2 parts");
}
String itemType = item.toString();
if (item instanceof SwitchItem) {
if ((configParts[1].equals("1")) || (configParts[1].equals("2")) || (configParts[1].equals("3")) || (configParts[1].equals("4"))) {
BindingConfig energenieBindingConfig = new EnergenieBindingConfig(configParts[0], configParts[1], itemType);
addBindingConfig(item, energenieBindingConfig);
} else {
throw new BindingConfigParseException("Your SwitchItem configuration does not contain channelNumbers");
}
} else if (item instanceof NumberItem) {
ChannelTypeDef channelType = ChannelTypeDef.valueOf(configParts[1].trim());
if (channelType != null) {
BindingConfig energenieBindingConfig = new EnergenieBindingConfig(configParts[0], configParts[1], itemType);
addBindingConfig(item, energenieBindingConfig);
} else {
throw new BindingConfigParseException("Your NumberItem configuration does not contain channelTypes");
}
}
} else {
logger.warn("bindingConfig is NULL (item=" + item + ") -> processing bindingConfig aborted!");
}
} catch (ArrayIndexOutOfBoundsException e) {
logger.warn("bindingConfig is invalid (item=" + item + ") -> processing bindingConfig aborted!");
}
}
Aggregations