public void receiveCommand( String itemName, Command command, BticinoBindingConfig itemBindingConfig) { try { synchronized (m_lock) { // An command is received from the openHab system // analyse it and execute it logger.debug( "Gateway [" + m_gateway_id + "], Command '{}' received for item {}", (Object[]) new String[] {command.toString(), itemName}); ProtocolRead l_pr = new ProtocolRead(itemBindingConfig.who + "*" + itemBindingConfig.where); l_pr.addProperty("who", itemBindingConfig.who); l_pr.addProperty("address", itemBindingConfig.where); int l_who = Integer.parseInt(itemBindingConfig.who); switch (l_who) { // Lights case 1: { if (OnOffType.ON.equals(command)) l_pr.addProperty("what", "1"); else l_pr.addProperty("what", "0"); break; } // Shutter case 2: { if (UpDownType.UP.equals(command)) l_pr.addProperty("what", "1"); else if (UpDownType.DOWN.equals(command)) l_pr.addProperty("what", "2"); else if (StopMoveType.STOP.equals(command)) l_pr.addProperty("what", "0"); break; } // CEN Basic & Evolved case 15: { // Only for the on type, send a CEN event (aka a pushbutton // device) // the CEN can start a scenario on eg. a MH200N gateway // device if (OnOffType.ON.equals(command)) l_pr.addProperty("what", itemBindingConfig.what); break; } } m_open_web_net.onCommand(l_pr); } } catch (Exception e) { logger.error( "Gateway [" + m_gateway_id + "], Error processing receiveCommand '{}'", (Object[]) new String[] {e.getMessage()}); } }
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"))); } } } } }