Beispiel #1
0
  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")));
          }
        }
      }
    }
  }