<?php



if ($device['os'] == 'sentry3')
{
  $divisor = "100";
  $outlet_divisor = $divisor;
  $multiplier = "1";

  # These PDUs may have > 1 "tower" accessible via a single management interface
  $tower_count = snmp_get($device,"systemTowerCount.0", "-Ovq", "Sentry3-MIB");
  $towers=1;
  while($towers <= $tower_count) {

    #################################
    # Check for Infeeds
    $infeed_oids = snmp_walk($device, "infeedID.$towers.1", "-Osqn", "Sentry3-MIB");
    if ($debug) { echo($infeed_oids."\n"); }
    $infeed_oids = trim($infeed_oids);

    if ($infeed_oids) echo("ServerTech Sentry Infeed ");
    foreach (explode("\n", $infeed_oids) as $infeed_data)
    {
      $infeed_data = trim($infeed_data);
      if ($infeed_data)
      {
        list($infeed_oid,$descr) = explode(" ", $infeed_data,2);
        $split_oid = explode('.',$infeed_oid);
        $infeed_index = $split_oid[count($split_oid)-1];

        #infeedLoadValue
        $infeed_oid      = "1.3.6.1.4.1.1718.3.2.2.1.7." . $towers . ".1";

        $descr_string    = snmp_get($device,"infeedID.$towers.$infeed_index", "-Ovq", "Sentry3-MIB");
        $descr           = "Infeed $descr_string";
        $low_warn_limit  = NULL;
        $low_limit       = NULL;
        $high_warn_limit = snmp_get($device,"infeedLoadHighThresh.$towers.$infeed_index", "-Ovq", "Sentry3-MIB");
        $high_limit      = snmp_get($device,"infeedCapacity.$towers.$infeed_index", "-Ovq", "Sentry3-MIB");
        $current         = snmp_get($device,"$infeed_oid", "-Ovq", "Sentry3-MIB") / $divisor;

        if ($current >= 0) {
          discover_sensor($valid['sensor'], 'current', $device, $infeed_oid, $towers, 'sentry3', $descr, $divisor, $multiplier, $low_limit, $low_warn_limit, $high_warn_limit, $high_limit, $current);
        }

        #################################
        # Check for per-outlet polling
        #$outlet_oids = snmp_walk($device, "outletLoadValue.$towers.$infeed_index", "-Osqn", "Sentry3-MIB");
        $outlet_oids = snmp_walk($device, "outletLoadValue.$towers.1", "-Osqn", "Sentry3-MIB");
        $outlet_oids = trim($outlet_oids);

        if ($outlet_oids) echo("ServerTech Sentry Outlet ");
        foreach (explode("\n", $outlet_oids) as $outlet_data)
        {
          $outlet_data = trim($outlet_data);
          if ($outlet_data)
          {
            list($outlet_oid,$outlet_descr) = explode(" ", $outlet_data,2);
            $outlet_split_oid = explode('.',$outlet_oid);
            $outlet_index = $outlet_split_oid[count($outlet_split_oid)-1];

            $outletsuffix = "$towers.$infeed_index.$outlet_index";
            $outlet_insert_index=$towers . $outlet_index;

            #outletLoadValue: "A non-negative value indicates the measured load in hundredths of Amps"
            $outlet_oid             = "1.3.6.1.4.1.1718.3.2.3.1.7.$outletsuffix";
            $outlet_descr_string    = snmp_get($device,"outletID.$outletsuffix", "-Ovq", "Sentry3-MIB");
            $outlet_descr           = "Outlet $outlet_descr_string";
            $outlet_low_warn_limit  = NULL;
            $outlet_low_limit       = NULL;
            $outlet_high_warn_limit = NULL;
            # Should be "outletCapacity" but is always -1. According to MIB: "A negative value indicates that the capacity was not available."
            $outlet_high_limit = snmp_get($device,"outletLoadHighThresh.$outletsuffix", "-Ovq", "Sentry3-MIB");
            $outlet_current         = snmp_get($device,"$outlet_oid", "-Ovq", "Sentry3-MIB") / $outlet_divisor;

            if ($outlet_current >= 0) {
              discover_sensor($valid['sensor'], 'current', $device, $outlet_oid, $outlet_insert_index, 'sentry3', $outlet_descr, $outlet_divisor, $multiplier, $outlet_low_limit, $outlet_low_warn_limit, $outlet_high_warn_limit, $outlet_high_limit, $outlet_current);
            }
          } // if ($outlet_data)

          unset($outlet_data);
          unset($outlet_oids);
          unset($outlet_oid);
          unset($outlet_descr_string);
          unset($outlet_descr);
          unset($outlet_low_warn_limit);
          unset($outlet_low_limit);
          unset($outlet_high_warn_limit);
          unset($outlet_high_limit);
          unset($outlet_current);

        } // foreach (explode("\n", $outlet_oids) as $outlet_data)

      } //if($infeed_data)
      unset($infeed_data);
      unset($infeed_oids);
      unset($descr_string);
      unset($descr);
      unset($low_warn_limit);
      unset($low_limit);
      unset($high_warn_limit);
      unset($high_limit);
      unset($current);

    } //foreach (explode("\n", $infeed_oids) as $infeed_data)

    $towers++;

  } // while($towers <= $tower_count)

  unset($towers);
}

?>
