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); } } // CENs else 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"))); } } } } }