use of org.openhab.core.library.items.SwitchItem in project openhab1-addons by openhab.
the class DigitalSTROMBinding method updateItemState.
private void updateItemState(Item item) {
if (item != null) {
Device device = deviceMap.get(item.getName());
if (device != null) {
State state = null;
if (item instanceof DimmerItem) {
state = new PercentType(getPercent(device.getMaxOutPutValue(), device.getOutputValue()));
} else if (item instanceof SwitchItem && !(item instanceof DimmerItem)) {
state = device.getOutputValue() > 0 ? OnOffType.ON : OnOffType.OFF;
} else if (item instanceof NumberItem) {
DigitalSTROMBindingConfig confItem = getConfigForItemName(item.getName());
if (confItem != null) {
if (confItem.sensor != null) {
int value = -1;
switch(confItem.sensor) {
case TEMPERATURE_INDOORS:
value = device.getTemperatureSensorValue();
if (value != -1) {
// Celsius
// TODO use resolution
state = new DecimalType((double) (value) / 40 - 43.15);
// from sensor
}
break;
case RELATIVE_HUMIDITY_INDOORS:
value = device.getHumiditySensorValue();
if (value != -1) {
// Percent
// TODO use resolution from
state = new DecimalType((double) (value) / 40);
// sensor
}
break;
case TEMPERATURE_OUTDOORS:
value = device.getTemperatureSensorValue();
if (value != -1) {
// Celsius
// TODO use resolution
state = new DecimalType((double) (value) / 40 - 43.15);
// from sensor
}
break;
case RELATIVE_HUMIDITY_OUTDOORS:
value = device.getHumiditySensorValue();
if (value != -1) {
// Percent
// TODO use resolution from
state = new DecimalType((double) (value) / 40);
// sensor
}
break;
default:
break;
}
} else if (confItem.consumption != null) {
int value = -1;
switch(confItem.consumption) {
case ACTIVE_POWER:
value = device.getPowerConsumption();
break;
case OUTPUT_CURRENT:
value = device.getEnergyMeterValue();
if (value != -1) {
state = new DecimalType(value);
}
break;
default:
break;
}
}
}
} else if (item instanceof RollershutterItem) {
DigitalSTROMBindingConfig confItem = getConfigForItemName(item.getName());
if (confItem != null) {
if (confItem.context != null && confItem.context.equals(ContextConfig.slat)) {
int output = getPercent(device.getMaxSlatPosition(), device.getSlatPosition());
state = new PercentType(100 - output);
} else if (confItem.context != null && confItem.context.equals(ContextConfig.awning)) {
int output = getPercent(device.getMaxOutPutValue(), device.getOutputValue());
state = new PercentType(output);
} else {
int output = getPercent(device.getMaxOutPutValue(), device.getOutputValue());
state = new PercentType(100 - output);
}
}
} else if (item instanceof StringItem) {
DigitalSTROMBindingConfig confItem = getConfigForItemName(item.getName());
if (confItem != null) {
if (confItem.sensor != null) {
int value = -1;
switch(confItem.sensor) {
case TEMPERATURE_INDOORS:
value = device.getTemperatureSensorValue();
if (value != -1) {
// Celsius
// TODO use resolution
state = new DecimalType((double) (value) / 40 - 43.15);
// from sensor
}
break;
case RELATIVE_HUMIDITY_INDOORS:
value = device.getHumiditySensorValue();
if (value != -1) {
// Percent
// TODO use resolution from
state = new DecimalType((double) (value) / 40);
// sensor
}
break;
case TEMPERATURE_OUTDOORS:
value = device.getTemperatureSensorValue();
if (value != -1) {
// Celsius
// TODO use resolution
state = new DecimalType((double) (value) / 40 - 43.15);
// from sensor
}
break;
case RELATIVE_HUMIDITY_OUTDOORS:
value = device.getHumiditySensorValue();
if (value != -1) {
// Percent
// TODO use resolution from
state = new DecimalType((double) (value) / 40);
// sensor
}
break;
default:
break;
}
} else if (confItem.consumption != null) {
int value = -1;
switch(confItem.consumption) {
case ACTIVE_POWER:
value = device.getPowerConsumption();
if (value != -1) {
state = new DecimalType(value);
}
break;
case OUTPUT_CURRENT:
value = device.getEnergyMeterValue();
if (value != -1) {
state = new DecimalType(value);
}
break;
default:
break;
}
}
}
}
eventPublisher.postUpdate(item.getName(), state);
} else {
logger.error("couldn't update item state, because device is null: " + item.getName());
}
} else {
logger.error("couldn't update item state, because item is null");
}
}
use of org.openhab.core.library.items.SwitchItem in project openhab1-addons by openhab.
the class BticinoDevice method handleEvent.
public void handleEvent(ProtocolRead p_protocol_read) throws Exception {
// the events on the bus are now received
// map them to events on the openhab bus
logger.debug("Gateway [" + m_gateway_id + "], Bticino WHO [" + p_protocol_read.getProperty("who") + "], WHAT [" + p_protocol_read.getProperty("what") + "], WHERE [" + p_protocol_read.getProperty("where") + "]");
// Get all the configs that are connected to this (who,where), multiple
// possible
List<BticinoBindingConfig> l_binding_configs = m_bticino_binding.getItemForBticinoBindingConfig(p_protocol_read.getProperty("who"), p_protocol_read.getProperty("where"));
// log it when an event has occured that no item is bound to
if (l_binding_configs.isEmpty()) {
logger.debug("Gateway [" + m_gateway_id + "], No Item found for bticino event, WHO [" + p_protocol_read.getProperty("who") + "], WHAT [" + p_protocol_read.getProperty("what") + "], WHERE [" + p_protocol_read.getProperty("where") + "]");
}
// every item associated with this who/where update the status
for (BticinoBindingConfig l_binding_config : l_binding_configs) {
// Get the Item out of the config
Item l_item = l_binding_config.getItem();
if (l_item instanceof SwitchItem) {
// Lights
if (p_protocol_read.getProperty("messageType").equalsIgnoreCase("lighting")) {
logger.debug("Gateway [" + m_gateway_id + "], RECEIVED EVENT FOR SwitchItem [" + l_item.getName() + "], TRANSLATE TO OPENHAB BUS EVENT");
if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Light ON")) {
eventPublisher.postUpdate(l_item.getName(), OnOffType.ON);
} else if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Light OFF")) {
eventPublisher.postUpdate(l_item.getName(), OnOffType.OFF);
}
} else // CENs
if (p_protocol_read.getProperty("messageType").equalsIgnoreCase("CEN Basic and Evolved")) {
// Pushbutton virtual address must match
if (l_binding_config.what.equalsIgnoreCase(p_protocol_read.getProperty("what"))) {
logger.debug("Gateway [" + m_gateway_id + "], RECEIVED EVENT FOR SwitchItem [" + l_item.getName() + "], TRANSLATE TO OPENHAB BUS EVENT");
if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Virtual pressure")) {
// only returns when finished
eventPublisher.sendCommand(l_item.getName(), OnOffType.ON);
} else if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Virtual release after short pressure")) {
// only returns when finished
eventPublisher.sendCommand(l_item.getName(), OnOffType.ON);
} else if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Virtual release after an extended pressure")) {
// only returns when finished
eventPublisher.sendCommand(l_item.getName(), OnOffType.ON);
} else if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Virtual extended pressure")) {
// only returns when finished
eventPublisher.sendCommand(l_item.getName(), OnOffType.ON);
}
}
}
} else if (l_item instanceof RollershutterItem) {
logger.debug("Gateway [" + m_gateway_id + "], RECEIVED EVENT FOR RollershutterItem [" + l_item.getName() + "], TRANSLATE TO OPENHAB BUS EVENT");
if (p_protocol_read.getProperty("messageType").equalsIgnoreCase("automation")) {
if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Automation UP")) {
eventPublisher.postUpdate(l_item.getName(), UpDownType.UP);
} else if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Automation DOWN")) {
eventPublisher.postUpdate(l_item.getName(), UpDownType.DOWN);
}
}
} else if (l_item instanceof NumberItem) {
logger.debug("Gateway [" + m_gateway_id + "], RECEIVED EVENT FOR NumberItem [" + l_item.getName() + "], TRANSLATE TO OPENHAB BUS EVENT");
// THERMOREGULATION
if (p_protocol_read.getProperty("messageType").equalsIgnoreCase("thermoregulation")) {
if (p_protocol_read.getProperty("messageDescription").equalsIgnoreCase("Temperature value")) {
eventPublisher.postUpdate(l_item.getName(), DecimalType.valueOf(p_protocol_read.getProperty("temperature")));
}
}
}
}
}
use of org.openhab.core.library.items.SwitchItem in project openhab1-addons by openhab.
the class FritzahaGenericBindingProvider method processBindingConfiguration.
/**
* {@inheritDoc}
*/
@Override
public void processBindingConfiguration(String context, Item item, String bindingConfig) throws BindingConfigParseException {
super.processBindingConfiguration(context, item, bindingConfig);
FritzahaDevice config = null;
TimeDef timedef = null;
String[] configParts = bindingConfig.trim().split(",");
if (configParts.length < 2) {
throw new BindingConfigParseException("FritzAHA items must start with <hostID>,<deviceID/AIN>");
}
if (item instanceof SwitchItem) {
if (configParts.length != 2) {
throw new BindingConfigParseException("FritzAHA switches must be of format <hostID>,<deviceID/AIN>");
}
if (configParts[1].length() > 8) {
config = new FritzahaWebserviceSwitch(configParts[0], configParts[1]);
} else {
config = new FritzahaQueryscriptSwitch(configParts[0], configParts[1]);
}
} else if (item instanceof NumberItem) {
if (configParts.length < 3 || configParts.length > 4) {
throw new BindingConfigParseException("FritzAHA meters must be of format <hostID>,<deviceID/AIN>,<valueToMeasure>[,timespec]");
} else if (configParts.length == 4 && !"energy".equalsIgnoreCase(configParts[2])) {
throw new BindingConfigParseException("FritzAHA non-energy meters must be of format <hostID>,<deviceID/AIN>,<valueToMeasure>");
} else if (configParts[1].length() > 8) {
if ("power".equalsIgnoreCase(configParts[2])) {
config = new FritzahaWebserviceMeter(configParts[0], configParts[1], MeterType.POWER);
} else if ("energy".equalsIgnoreCase(configParts[2])) {
config = new FritzahaWebserviceMeter(configParts[0], configParts[1], MeterType.ENERGY);
} else if ("temperature".equalsIgnoreCase(configParts[2])) {
config = new FritzahaWebserviceMeter(configParts[0], configParts[1], MeterType.TEMPERATURE);
} else {
logger.warn("Could not configure item " + item + " - Unsupported meter type for webservice");
return;
}
} else {
if ("voltage".equalsIgnoreCase(configParts[2])) {
config = new FritzahaQueryscriptMeter(configParts[0], configParts[1], MeterType.VOLTAGE);
} else if ("current".equalsIgnoreCase(configParts[2])) {
config = new FritzahaQueryscriptMeter(configParts[0], configParts[1], MeterType.CURRENT);
} else if ("power".equalsIgnoreCase(configParts[2])) {
config = new FritzahaQueryscriptMeter(configParts[0], configParts[1], MeterType.POWER);
} else if ("energy".equalsIgnoreCase(configParts[2])) {
if (configParts.length > 3) {
if ("mins".equalsIgnoreCase(configParts[3])) {
timedef = TimeDef.MINUTES;
} else if ("day".equalsIgnoreCase(configParts[3])) {
timedef = TimeDef.DAY;
} else if ("month".equalsIgnoreCase(configParts[3])) {
timedef = TimeDef.MONTH;
} else if ("year".equalsIgnoreCase(configParts[3])) {
timedef = TimeDef.YEAR;
} else {
timedef = TimeDef.YEAR;
logger.warn("Timedef of item " + item + "is set to default YEAR. " + "Please check your syntax. Shall be year, month, day or mins.");
}
} else {
timedef = TimeDef.YEAR;
logger.debug("Timedef of item " + item + "is set to default YEAR because no timespec was given.");
}
config = new FritzahaQueryscriptMeter(configParts[0], configParts[1], MeterType.ENERGY, timedef);
} else {
logger.warn("Could not configure item " + item + " - Unsupported meter type for query script");
return;
}
}
} else {
logger.warn("Could not configure item " + item + " - Unsupported item type");
}
if (config != null) {
addBindingConfig(item, config);
} else {
logger.error("Could not configure item " + item + " - An error occurred");
}
}
use of org.openhab.core.library.items.SwitchItem in project openhab1-addons by openhab.
the class ExecGenericBindingProviderTest method testParseBindingConfig.
@Test
public void testParseBindingConfig() throws BindingConfigParseException {
ExecBindingConfig config = new ExecGenericBindingProvider.ExecBindingConfig();
String bindingConfig = "ON:some command to execute, OFF: 'other command with comma\\, and \\'quotes\\' and slashes \\\\ ', *:and a fallback";
SwitchItem item = new SwitchItem("");
provider.parseLegacyOutBindingConfig(item, bindingConfig, config);
Assert.assertEquals(3, config.size());
Assert.assertEquals("some command to execute", config.get(OnOffType.ON).commandLine);
Assert.assertEquals("other command with comma, and 'quotes' and slashes \\ ", config.get(OnOffType.OFF).commandLine);
Assert.assertEquals("and a fallback", config.get(StringType.valueOf("*")).commandLine);
}
use of org.openhab.core.library.items.SwitchItem in project openhab1-addons by openhab.
the class ExecGenericBindingProviderTest method testParseBindingConfigIn.
@Test
public void testParseBindingConfigIn() throws BindingConfigParseException {
String cmdLine = "/usr/bin/uptime";
String itemName = "Switch";
SwitchItem item = new SwitchItem(itemName);
String bindingConfig = "<[" + cmdLine + ":60000:]";
provider.processBindingConfiguration("New", item, bindingConfig);
Assert.assertTrue(provider.providesBinding());
Assert.assertTrue(provider.providesBindingFor(itemName));
Assert.assertEquals(cmdLine, provider.getCommandLine(itemName));
Assert.assertEquals(60000, provider.getRefreshInterval(itemName));
Assert.assertEquals("", provider.getTransformation(itemName));
List<String> itemNames = provider.getInBindingItemNames();
Assert.assertEquals(itemName, itemNames.get(0));
}
Aggregations