Esempio n. 1
0
  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()});
    }
  }
Esempio n. 2
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")));
          }
        }
      }
    }
  }