ENERGY-OBJECT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    NOTIFICATION-TYPE,
    mib-2,
    Integer32, Counter32, Unsigned32, TimeTicks
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, RowStatus, TimeInterval,
    TimeStamp, TruthValue, StorageType
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP
        FROM SNMPv2-CONF
    OwnerString
      FROM RMON-MIB
    entPhysicalIndex
       FROM ENTITY-MIB
    PowerStateSet
       FROM IANAPowerStateSet-MIB;

energyObjectMib MODULE-IDENTITY
    LAST-UPDATED    "201502090000Z"    -- 9 February 2015
    ORGANIZATION    "IETF EMAN Working Group"
    CONTACT-INFO
            "WG charter:
             http://datatracker.ietf.org/wg/eman/charter/

             Mailing Lists:
             General Discussion: eman@ietf.org

             To Subscribe:
             https://www.ietf.org/mailman/listinfo/eman

             Archive:
             http://www.ietf.org/mail-archive/web/eman

          Editors:
             Mouli Chandramouli
             Cisco Systems, Inc.
             Sarjapur Outer Ring Road
             Bangalore 560103
             India
             Phone: +91 80 4429 2409
             Email: moulchan@cisco.com

             Brad Schoening
             44 Rivers Edge Drive
             Little Silver, NJ 07739
             United States
             Email: brad.schoening@verizon.net

             Juergen Quittek
             NEC Europe, Ltd.
             NEC Laboratories Europe
             Network Research Division
             Kurfuersten-Anlage 36
             Heidelberg  69115
             Germany
             Phone: +49 6221 4342-115
             Email: quittek@neclab.eu

             Thomas Dietz
             NEC Europe, Ltd.
             NEC Laboratories Europe
             Network Research Division
             Kurfuersten-Anlage 36
             69115 Heidelberg
             Germany
             Phone: +49 6221 4342-128
             Email: Thomas.Dietz@nw.neclab.eu

             Benoit Claise
             Cisco Systems, Inc.
             De Kleetlaan 6a b1
             Degem 1831
             Belgium
             Phone:  +32 2 704 5622
             Email: bclaise@cisco.com"
    DESCRIPTION
       "Copyright (c) 2015 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject
        to the license terms contained in, the Simplified BSD License
        set forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (http://trustee.ietf.org/license-info).

        This MIB is used to monitor power and energy in
        devices.

        The tables eoMeterCapabilitiesTable and eoPowerTable
        are a sparse extension of the eoTable from the
        ENERGY-OBJECT-CONTEXT-MIB.  As a requirement,
        [RFC7461] SHOULD be implemented.

        Module Compliance of ENTITY-MIB v4 with respect to
        entity4CRCompliance MUST be supported which requires
        implementation of 4 MIB objects: entPhysicalIndex,
        entPhysicalClass, entPhysicalName and entPhysicalUUID."
    REVISION "201502090000Z"     -- 9 February 2015
    DESCRIPTION
       "Initial version, published as RFC 7460."
   ::= { mib-2 229 }

energyObjectMibNotifs OBJECT IDENTIFIER
    ::= { energyObjectMib 0 }

energyObjectMibObjects OBJECT IDENTIFIER
    ::= { energyObjectMib 1 }

energyObjectMibConform  OBJECT IDENTIFIER
    ::= { energyObjectMib 2 }

-- Textual Conventions

UnitMultiplier ::= TEXTUAL-CONVENTION
    STATUS           current
    DESCRIPTION
       "The Unit Multiplier is an integer value that represents
       the IEEE 61850 Annex A units multiplier associated with
       the integer units used to measure the power or energy.

       For example, when used with eoPowerUnitMultiplier, -3
       represents 10^-3 or milliwatts."
    REFERENCE
       "The International System of Units (SI), National
       Institute of Standards and Technology, Spec. Publ. 330,
       August 1991."
    SYNTAX INTEGER {
        yocto(-24),   -- 10^-24
        zepto(-21),   -- 10^-21
        atto(-18),    -- 10^-18
        femto(-15),   -- 10^-15
        pico(-12),    -- 10^-12
        nano(-9),     -- 10^-9
        micro(-6),    -- 10^-6
        milli(-3),    -- 10^-3
        units(0),     -- 10^0
        kilo(3),      -- 10^3
        mega(6),      -- 10^6
        giga(9),      -- 10^9
        tera(12),     -- 10^12
        peta(15),     -- 10^15
        exa(18),      -- 10^18
        zetta(21),    -- 10^21
        yotta(24)     -- 10^24
    }

-- Objects

eoMeterCapabilitiesTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF EoMeterCapabilitiesEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "This table is useful for helping applications determine
       the monitoring capabilities supported by the local
       management agents.  It is possible for applications to
       know which tables are usable without going through a
       trial-and-error process."
    ::= { energyObjectMibObjects 1 }

eoMeterCapabilitiesEntry OBJECT-TYPE
    SYNTAX          EoMeterCapabilitiesEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "An entry describes the metering capability of an Energy
       Object."
    INDEX { entPhysicalIndex }
    ::= { eoMeterCapabilitiesTable  1 }

EoMeterCapabilitiesEntry ::= SEQUENCE {
          eoMeterCapability          BITS
               }

eoMeterCapability OBJECT-TYPE
    SYNTAX   BITS {
       none(0),
       powermetering(1),        -- power measurement
       energymetering(2),       -- energy measurement
       powerattributes(3)       -- power attributes
                   }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "An indication of the energy-monitoring capabilities
       supported by this agent.  This object use a BITS syntax
       and indicates the MIB groups supported by the probe.  By
       reading the value of this object, it is possible to
       determine the MIB tables supported."
    ::= { eoMeterCapabilitiesEntry 1  }

eoPowerTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF EoPowerEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "This table lists Energy Objects."
    ::= { energyObjectMibObjects 2  }

eoPowerEntry OBJECT-TYPE
    SYNTAX          EoPowerEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "An entry describes the power usage of an Energy Object."
    INDEX { entPhysicalIndex }
    ::= { eoPowerTable  1 }

EoPowerEntry ::= SEQUENCE {
    eoPower                         Integer32,
    eoPowerNameplate                Unsigned32,
    eoPowerUnitMultiplier           UnitMultiplier,
    eoPowerAccuracy                 Integer32,
    eoPowerMeasurementCaliber       INTEGER,
    eoPowerCurrentType             INTEGER,
    eoPowerMeasurementLocal         TruthValue,
    eoPowerAdminState               PowerStateSet,
    eoPowerOperState                PowerStateSet,
    eoPowerStateEnterReason         OwnerString
  }

eoPower OBJECT-TYPE
    SYNTAX          Integer32
    UNITS          "watts"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates the power measured for the Energy
       Object.  For alternating current, this value is obtained
       as an average over fixed number of AC cycles.  This value
       is specified in SI units of watts with the magnitude of
       watts (milliwatts, kilowatts, etc.) indicated separately
       in eoPowerUnitMultiplier.  The accuracy of the measurement
       is specified in eoPowerAccuracy.  The direction of power
       flow is indicated by the sign on eoPower.  If the Energy
       Object is consuming power, the eoPower value will be
       positive.  If the Energy Object is producing power, the
       eoPower value will be negative.

       The eoPower MUST be less than or equal to the maximum
       power that can be consumed at the Power State specified
       by eoPowerState.

       The eoPowerMeasurementCaliber object specifies how the
       usage value reported by eoPower was obtained.  The eoPower
       value must report 0 if the eoPowerMeasurementCaliber is
       'unavailable'.  For devices that cannot measure or
       report power, this option can be used."
    ::= { eoPowerEntry 1 }

eoPowerNameplate OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS          "watts"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates the rated maximum consumption for
       the fully populated Energy Object.  The nameplate power
       requirements are the maximum power numbers given in SI
       watts and, in almost all cases, are well above the
       expected operational consumption.  Nameplate power is
       widely used for power provisioning.  This value is
       specified in either units of watts or voltage and
       current.  The units are therefore SI watts or equivalent

       Volt-Amperes with the magnitude (milliwatts, kilowatts,
       etc.) indicated separately in eoPowerUnitMultiplier."
    ::= { eoPowerEntry 2 }

eoPowerUnitMultiplier OBJECT-TYPE
    SYNTAX          UnitMultiplier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "The magnitude of watts for the usage value in eoPower
       and eoPowerNameplate."
    ::= { eoPowerEntry 3 }

eoPowerAccuracy OBJECT-TYPE
    SYNTAX          Integer32 (0..10000)
    UNITS           "hundredths of percent"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates a percentage value, in hundredths of a
       percent, representing the assumed accuracy of the usage
       reported by eoPower.  For example, the value 1010 means
       the reported usage is accurate to +/- 10.1 percent.  This
       value is zero if the accuracy is unknown or not
       applicable based upon the measurement method.

       ANSI and IEC define the following accuracy classes for
       power measurement:
            IEC 62053-22 60044-1 class 0.1, 0.2, 0.5, 1  3.
            ANSI C12.20 class 0.2, 0.5"
    ::= { eoPowerEntry 4 }

eoPowerMeasurementCaliber   OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unavailable(1) ,
                        unknown(2),
                        actual(3) ,
                        estimated(4),
                        static(5)                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object specifies how the usage value reported by
       eoPower was obtained:

       - unavailable(1): Indicates that the usage is not
       available.  In such a case, the eoPower value must be 0
       for devices that cannot measure or report power this

       option can be used.

       - unknown(2): Indicates that the way the usage was
       determined is unknown.  In some cases, entities report
       aggregate power on behalf of another device.  In such
       cases it is not known whether the usage reported is
       actual, estimated, or static.

       - actual(3):  Indicates that the reported usage was
       measured by the entity through some hardware or direct
       physical means.  The usage data reported is not estimated
       or static but is the measured consumption rate.

       - estimated(4): Indicates that the usage was not
       determined by physical measurement.  The value is a
       derivation based upon the device type, state, and/or
       current utilization using some algorithm or heuristic.  It
       is presumed that the entity's state and current
       configuration were used to compute the value.

       - static(5): Indicates that the usage was not determined
       by physical measurement, algorithm, or derivation.  The
       usage was reported based upon external tables,
       specifications, and/or model information.  For example, a
       PC Model X draws 200W, while a PC Model Y draws 210W."
    ::= { eoPowerEntry 5 }

eoPowerCurrentType OBJECT-TYPE
    SYNTAX      INTEGER  {
                       ac(1),
                       dc(2),
                       unknown(3)
                   }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "This object indicates whether the eoPower for the
       Energy Object reports alternating current 'ac', direct
       current 'dc', or that the current type is unknown."
    ::= { eoPowerEntry 6 }

eoPowerMeasurementLocal  OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates the source of power measurement
       and can be useful when modeling the power usage of

       attached devices.  The power measurement can be performed
       by the entity itself or the power measurement of the
       entity can be reported by another trusted entity using a
       protocol extension.  A value of true indicates the
       measurement is performed by the entity, whereas false
       indicates that the measurement was performed by another
       entity."
    ::= { eoPowerEntry 7 }

eoPowerAdminState OBJECT-TYPE
    SYNTAX          PowerStateSet
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
       "This object specifies the desired Power State and the
       Power State Set for the Energy Object.  Note that other(0)
       is not a Power State Set and unknown(255) is not a Power
       State as such, but simply an indication that the Power
       State of the Energy Object is unknown.
       Possible values of eoPowerAdminState within the Power
       State Set are registered at IANA.
       A current list of assignments can be found at
       <http://www.iana.org/assignments/power-state-sets>"
    ::= { eoPowerEntry 8 }

eoPowerOperState OBJECT-TYPE
    SYNTAX          PowerStateSet
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object specifies the current operational Power
       State and the Power State Set for the Energy Object.
       other(0) is not a Power State Set and unknown(255) is not
       a Power State as such, but simply an indication that the
       Power State of the Energy Object is unknown.

       Possible values of eoPowerOperState within the Power
       State Set are registered at IANA.  A current list of
       assignments can be found at
       <http://www.iana.org/assignments/power-state-sets>"
    ::= { eoPowerEntry 9 }

eoPowerStateEnterReason OBJECT-TYPE
     SYNTAX         OwnerString
     MAX-ACCESS     read-write
     STATUS         current
     DESCRIPTION
       "This string object describes the reason for the

       eoPowerAdminState transition.  Alternatively, this string
       may contain with the entity that configured this Energy
       Object to this Power State."
     DEFVAL { "" }
     ::= { eoPowerEntry 10 }

eoPowerStateTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF EoPowerStateEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "This table enumerates the maximum power usage, in watts,
       for every single supported Power State of each Energy
       Object.

       This table has cross-reference with the eoPowerTable,
       containing rows describing each Power State for the
       corresponding Energy Object.  For every Energy Object in
       the eoPowerTable, there is a corresponding entry in this
       table."
    ::= { energyObjectMibObjects 3  }

eoPowerStateEntry OBJECT-TYPE
    SYNTAX          EoPowerStateEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "A eoPowerStateEntry extends a corresponding
       eoPowerEntry.  This entry displays max usage values at
       every single possible Power State supported by the Energy
       Object.
       For example, given the values of a Energy Object
       corresponding to a maximum usage of 0 W at the
       state emanmechoff, 8 W at state 6 (ready), 11 W at state
       emanmediumMinus, and 11 W at state emanhigh:

               State      MaxUsage Units
            emanmechoff       0       W
            emansoftoff       0       W
            emanhibernate     0       W
            emansleep         0       W
            emanstandby       0       W
            emanready         8       W
            emanlowMinus      8       W
            emanlow          11       W
            emanmediumMinus  11       W
            emanmedium       11       W
            emanhighMinus    11       W

            emnanhigh        11       W

       Furthermore, this table also includes the total time in
       each Power State, along with the number of times a
       particular Power State was entered."
    INDEX { entPhysicalIndex, eoPowerStateIndex }
    ::= { eoPowerStateTable 1 }

EoPowerStateEntry ::= SEQUENCE {
    eoPowerStateIndex              PowerStateSet,
    eoPowerStateMaxPower           Integer32,
    eoPowerStatePowerUnitMultiplier  UnitMultiplier,
    eoPowerStateTotalTime            TimeTicks,
    eoPowerStateEnterCount            Counter32
}

eoPowerStateIndex OBJECT-TYPE
    SYNTAX          PowerStateSet
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "This object specifies the index of the Power State of
       the Energy Object within a Power State Set.  The semantics
       of the specific Power State can be obtained from the
       Power State Set definition."
    ::= { eoPowerStateEntry 1 }

eoPowerStateMaxPower OBJECT-TYPE
    SYNTAX          Integer32
    UNITS          "watts"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates the maximum power for the Energy
       Object at the particular Power State.  This value is
       specified in SI units of watts with the magnitude of the
       units (milliwatts, kilowatts, etc.) indicated separately
       in eoPowerStatePowerUnitMultiplier.  If the maximum power
       is not known for a certain Power State, then the value is
       encoded as 0xFFFFFFFF.

       For Power States not enumerated, the value of
       eoPowerStateMaxPower might be interpolated by using the
       next highest supported Power State."
    ::= { eoPowerStateEntry 2  }

eoPowerStatePowerUnitMultiplier OBJECT-TYPE
    SYNTAX          UnitMultiplier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "The magnitude of watts for the usage value in
       eoPowerStateMaxPower."
    ::= { eoPowerStateEntry 3  }

eoPowerStateTotalTime OBJECT-TYPE
    SYNTAX      TimeTicks
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "This object indicates the total time in hundredths
       of a second that the Energy Object has been in this power
       state since the last reset, as specified in the
       sysUpTime."
    ::= { eoPowerStateEntry 4  }

eoPowerStateEnterCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
       "This object indicates how often the Energy Object has
       entered this power state, since the last reset of the
       device as specified in the sysUpTime."
    ::= { eoPowerStateEntry 5   }

eoEnergyParametersTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF EoEnergyParametersEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "This table is used to configure the parameters for
       energy measurement collection in the table eoEnergyTable.
       This table allows the configuration of different
       measurement settings on the same Energy Object.
       Implementation of this table only makes sense for Energy
       Objects that an eoPowerMeasurementCaliber of actual."
    ::= { energyObjectMibObjects 4   }

eoEnergyParametersEntry OBJECT-TYPE
    SYNTAX          EoEnergyParametersEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "An entry controls an energy measurement in
       eoEnergyTable."
    INDEX { entPhysicalIndex, eoEnergyParametersIndex }
    ::= { eoEnergyParametersTable 1 }

EoEnergyParametersEntry ::= SEQUENCE {
    eoEnergyParametersIndex            Integer32,
    eoEnergyParametersIntervalLength   TimeInterval,
    eoEnergyParametersIntervalNumber   Unsigned32,
    eoEnergyParametersIntervalMode     INTEGER,
    eoEnergyParametersIntervalWindow   TimeInterval,
    eoEnergyParametersSampleRate       Unsigned32,
    eoEnergyParametersStorageType      StorageType,
    eoEnergyParametersStatus           RowStatus
                             }

eoEnergyParametersIndex OBJECT-TYPE
    SYNTAX           Integer32 (1..2147483647)
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
       "This object specifies the index of the Energy Parameters
       setting for collection of energy measurements for an
       Energy Object.  An Energy Object can have multiple
       eoEnergyParametersIndex, depending on the capabilities of
       the Energy Object"
    ::= { eoEnergyParametersEntry 2 }

eoEnergyParametersIntervalLength OBJECT-TYPE
    SYNTAX          TimeInterval
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
       "This object indicates the length of time in hundredths
       of a second over which to compute the average
       eoEnergyConsumed measurement in the eoEnergyTable table.
       The computation is based on the Energy Object's internal
       sampling rate of power consumed or produced by the Energy
       Object.  The sampling rate is the rate at which the Energy
       Object can read the power usage and may differ based on
       device capabilities.  The average energy consumption is
       then computed over the length of the interval.  The
       default value of 15 minutes is a common interval used in
       industry."
    DEFVAL { 90000 }
    ::= { eoEnergyParametersEntry 3 }

eoEnergyParametersIntervalNumber OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
       "The number of intervals maintained in the eoEnergyTable.
       Each interval is characterized by a specific
       eoEnergyCollectionStartTime, used as an index to the
       table eoEnergyTable.  Whenever the maximum number of
       entries is reached, the measurement over the new interval
       replaces the oldest measurement.  There is one exception
       to this rule: when the eoEnergyMaxConsumed and/or
       eoEnergyMaxProduced are in (one of) the two oldest
       measurement(s), they are left untouched and the next
       oldest measurement is replaced."
       DEFVAL { 10 }
    ::= { eoEnergyParametersEntry 4 }

eoEnergyParametersIntervalMode OBJECT-TYPE
  SYNTAX          INTEGER  {
                      period(1),
                      sliding(2),
                      total(3)
                  }
  MAX-ACCESS      read-create
  STATUS          current
  DESCRIPTION
       "A control object to define the mode of interval
       calculation for the computation of the average
       eoEnergyConsumed or eoEnergyProvided measurement in the
       eoEnergyTable table.

       A mode of period(1) specifies non-overlapping periodic
       measurements.

       A mode of sliding(2) specifies overlapping sliding
       windows where the interval between the start of one
       interval and the next is defined in
       eoEnergyParametersIntervalWindow.

       A mode of total(3) specifies non-periodic measurement.
       In this mode only one interval is used as this is a
       continuous measurement since the last reset.  The value of
       eoEnergyParametersIntervalNumber should be (1) one and
       eoEnergyParametersIntervalLength is ignored."
   ::= { eoEnergyParametersEntry 5 }

eoEnergyParametersIntervalWindow OBJECT-TYPE
    SYNTAX          TimeInterval
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
       "The length of the duration window between the starting
       time of one sliding window and the next starting time in
       hundredths of seconds, used to compute the average of
       eoEnergyConsumed, eoEnergyProvided measurements in the
       eoEnergyTable table.  This is valid only when the
       eoEnergyParametersIntervalMode is sliding(2).  The
       eoEnergyParametersIntervalWindow value should be a
       multiple of eoEnergyParametersSampleRate."
    ::= { eoEnergyParametersEntry 6 }

eoEnergyParametersSampleRate OBJECT-TYPE
    SYNTAX          Unsigned32
   UNITS           "Milliseconds"
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
       "The sampling rate, in milliseconds, at which the Energy
       Object should poll power usage in order to compute the
       average eoEnergyConsumed, eoEnergyProvided measurements
       in the table eoEnergyTable.  The Energy Object should
       initially set this sampling rate to a reasonable value,
       i.e., a compromise between intervals that will provide
       good accuracy by not being too long, but not so short
       that they affect the Energy Object performance by
       requesting continuous polling.  If the sampling rate is
       unknown, the value 0 is reported.  The sampling rate
       should be selected so that
       eoEnergyParametersIntervalWindow is a multiple of
       eoEnergyParametersSampleRate.  The default value is one
       second."
    DEFVAL { 1000 }
    ::= { eoEnergyParametersEntry 7 }

eoEnergyParametersStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This variable indicates the storage type for this row."
    DEFVAL { nonVolatile }
    ::= {eoEnergyParametersEntry 8 }

eoEnergyParametersStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
       "The status of this row.  The eoEnergyParametersStatus is
       used to start or stop energy usage logging.  An entry
       status may not be active(1) unless all objects in the
       entry have an appropriate value.  If this object is not
       equal to active, all associated usage-data logged into
       the eoEnergyTable will be deleted.  The data can be
       destroyed by setting up the eoEnergyParametersStatus to
       destroy."
    ::= {eoEnergyParametersEntry 9 }

eoEnergyTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF EoEnergyEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "This table lists Energy Object energy measurements.
       Entries in this table are only created if the
       corresponding value of object eoPowerMeasurementCaliber
       is active(3), i.e., if the power is actually metered."
    ::= { energyObjectMibObjects 5   }

eoEnergyEntry OBJECT-TYPE
    SYNTAX          EoEnergyEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describing energy measurements."
    INDEX { eoEnergyParametersIndex,
            eoEnergyCollectionStartTime }
    ::= { eoEnergyTable 1 }

EoEnergyEntry ::= SEQUENCE {
    eoEnergyCollectionStartTime       TimeTicks,
     eoEnergyConsumed                  Unsigned32,
     eoEnergyProvided                  Unsigned32,
     eoEnergyStored                    Unsigned32,
     eoEnergyUnitMultiplier            UnitMultiplier,
     eoEnergyAccuracy                  Integer32,
     eoEnergyMaxConsumed               Unsigned32,
     eoEnergyMaxProduced               Unsigned32,
     eoEnergyDiscontinuityTime         TimeStamp
     }

eoEnergyCollectionStartTime OBJECT-TYPE
    SYNTAX          TimeTicks
    UNITS          "hundredths of a second"
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
       "The time (in hundredths of a second) since the
       network management portion of the system was last
       re-initialized, as specified in the sysUpTime RFC 3418.
       This object specifies the start time of the energy
       measurement sample."
    REFERENCE
      "RFC 3418: Management Information Base (MIB) for the
       Simple Network Management Protocol (SNMP)"
    ::= { eoEnergyEntry 1 }

eoEnergyConsumed OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "Watt-hours"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates the energy consumed in units of
       watt-hours for the Energy Object over the defined
       interval.  This value is specified in the common billing
       units of watt-hours with the magnitude of watt-hours
       kWh, MWh, etc.) indicated separately in
       eoEnergyUnitMultiplier."
    ::= { eoEnergyEntry 2 }

eoEnergyProvided OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "Watt-hours"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates the energy produced in units of
       watt-hours for the Energy Object over the defined
       interval.

       This value is specified in the common billing units of
       watt-hours with the magnitude of watt-hours (kWh, MWh,
       etc.) indicated separately in
       eoEnergyUnitMultiplier."
    ::= { eoEnergyEntry 3 }

eoEnergyStored OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "Watt-hours"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates the difference of the energy
       consumed and energy produced for an Energy Object in
       units of watt-hours for the Energy Object over the
       defined interval.  This value is specified in the common
       billing units of watt-hours with the magnitude of
       watt-hours (kWh, MWh, etc.) indicated separately in
       eoEnergyUnitMultiplier."
    ::= { eoEnergyEntry 4 }

eoEnergyUnitMultiplier OBJECT-TYPE
    SYNTAX          UnitMultiplier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object is the magnitude of watt-hours for the
       energy field in eoEnergyConsumed, eoEnergyProvided,
       eoEnergyStored, eoEnergyMaxConsumed, and
       eoEnergyMaxProduced."
    ::= { eoEnergyEntry 5  }

eoEnergyAccuracy OBJECT-TYPE
    SYNTAX          Integer32 (0..10000)
    UNITS           "hundredths of percent"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object indicates a percentage accuracy, in hundredths
       of a percent, of Energy usage reporting.  eoEnergyAccuracy
       is applicable to all Energy measurements in the
       eoEnergyTable.

       For example, 1010 means the reported usage is accurate to
       +/- 10.1 percent.

       This value is zero if the accuracy is unknown."
    ::= { eoEnergyEntry 6 }

eoEnergyMaxConsumed OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS          "Watt-hours"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object is the maximum energy observed in
       eoEnergyConsumed since the monitoring started or was
       reinitialized.  This value is specified in the common
       billing units of watt-hours with the magnitude of
       watt-hours (kWh, MWh, etc.) indicated separately in
       eoEnergyUnitMultiplier."
    ::= { eoEnergyEntry 7  }

eoEnergyMaxProduced OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS          "Watt-hours"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
       "This object is the maximum energy ever observed in
       eoEnergyEnergyProduced since the monitoring started.  This
       value is specified in the units of watt-hours with the
       magnitude of watt-hours (kWh, MWh, etc.) indicated
       separately in eoEnergyEnergyUnitMultiplier."
    ::= { eoEnergyEntry 8 }

 eoEnergyDiscontinuityTime OBJECT-TYPE
    SYNTAX       TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The value of sysUpTime RFC 3418 on the most recent
       occasion at which any one or more of this entity's energy
       counters in this table suffered a discontinuity:
       eoEnergyConsumed, eoEnergyProvided or eoEnergyStored.  If
       no such discontinuities have occurred since the last
       re-initialization of the local management subsystem, then
       this object contains a zero value."
    REFERENCE
       "RFC 3418: Management Information Base (MIB) for the
        Simple Network Management Protocol (SNMP)"
    ::= { eoEnergyEntry 9 }

-- Notifications

eoPowerEnableStatusNotification
OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
       "This object controls whether the system produces
       notifications for eoPowerStateChange.  A false value will
       prevent these notifications from being generated."
    DEFVAL { false }
    ::= { energyObjectMibNotifs 1 }

eoPowerStateChange NOTIFICATION-TYPE
    OBJECTS       {eoPowerAdminState, eoPowerOperState,
eoPowerStateEnterReason}
    STATUS        current
    DESCRIPTION
       "The SNMP entity generates the eoPowerStateChange when
       the values of eoPowerAdminState or eoPowerOperState,
       in the context of the Power State Set, have changed for
       the Energy Object represented by the entPhysicalIndex."
    ::= { energyObjectMibNotifs 2 }

-- Conformance

energyObjectMibCompliances  OBJECT IDENTIFIER
    ::= { energyObjectMibConform 1 }

energyObjectMibGroups  OBJECT IDENTIFIER
    ::= { energyObjectMibConform 2 }
energyObjectMibFullCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
       "When this MIB is implemented with support for
       read-create, then such an implementation can
       claim full compliance.  Such devices can then
       be both monitored and configured with this MIB.

       Module Compliance of RFC 6933
       with respect to entity4CRCompliance MUST
       be supported, which requires implementation
       of four MIB objects: entPhysicalIndex, entPhysicalClass,
       entPhysicalName and entPhysicalUUID."
    REFERENCE
       "RFC 6933: Entity MIB (Version 4)"
    MODULE          -- this module
    MANDATORY-GROUPS {
                energyObjectMibTableGroup,
                energyObjectMibStateTableGroup,
                eoPowerEnableStatusNotificationGroup,
                energyObjectMibNotifGroup
                    }

    GROUP     energyObjectMibEnergyTableGroup
       DESCRIPTION
          "A compliant implementation does not
           have to implement."

    GROUP    energyObjectMibEnergyParametersTableGroup
       DESCRIPTION
           "A compliant implementation does not
            have to implement."

    GROUP     energyObjectMibMeterCapabilitiesTableGroup
       DESCRIPTION
           "A compliant implementation does not
            have to implement."
    ::= { energyObjectMibCompliances 1 }

energyObjectMibReadOnlyCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
       "When this MIB is implemented without support for
       read-create (i.e., in read-only mode), then such an
       implementation can claim read-only compliance.  Such a
       device can then be monitored but cannot be
       configured with this MIB.

       Module Compliance of [RFC6933] with respect to
       entity4CRCompliance MUST be supported which requires
       implementation of 4 MIB objects: entPhysicalIndex,
       entPhysicalClass, entPhysicalName and entPhysicalUUID."
    REFERENCE
       "RFC 6933: Entity MIB (Version 4)"
    MODULE          -- this module
    MANDATORY-GROUPS {
                        energyObjectMibTableGroup,
                        energyObjectMibStateTableGroup,
                        energyObjectMibNotifGroup
                      }
    ::= { energyObjectMibCompliances 2 }

-- Units of Conformance

energyObjectMibTableGroup OBJECT-GROUP
   OBJECTS         {
                        eoPower,
                        eoPowerNameplate,
                        eoPowerUnitMultiplier,
                        eoPowerAccuracy,
                        eoPowerMeasurementCaliber,
                        eoPowerCurrentType,
                        eoPowerMeasurementLocal,
                        eoPowerAdminState,
                        eoPowerOperState,
                        eoPowerStateEnterReason
                    }
   STATUS          current
   DESCRIPTION
       "This group contains the collection of all the objects
       related to the Energy Object."
   ::= { energyObjectMibGroups 1 }

energyObjectMibStateTableGroup OBJECT-GROUP
    OBJECTS      {
                         eoPowerStateMaxPower,
                         eoPowerStatePowerUnitMultiplier,
                         eoPowerStateTotalTime,
                         eoPowerStateEnterCount
                    }
    STATUS          current
    DESCRIPTION
       "This group contains the collection of all the objects
       related to the Power State."
    ::= { energyObjectMibGroups 2 }

energyObjectMibEnergyParametersTableGroup OBJECT-GROUP
    OBJECTS         {
                        eoEnergyParametersIntervalLength,
                        eoEnergyParametersIntervalNumber,
                        eoEnergyParametersIntervalMode,
                        eoEnergyParametersIntervalWindow,
                        eoEnergyParametersSampleRate,
                        eoEnergyParametersStorageType,
                        eoEnergyParametersStatus
                    }
    STATUS          current
    DESCRIPTION
        "This group contains the collection of all the objects
        related to the configuration of the Energy Table."
    ::= { energyObjectMibGroups 3 }

energyObjectMibEnergyTableGroup OBJECT-GROUP
    OBJECTS         {
                     -- Note that object
                   -- eoEnergyCollectionStartTime is not
                        -- included since it is not-accessible

                        eoEnergyConsumed,
                        eoEnergyProvided,
                        eoEnergyStored,
                        eoEnergyUnitMultiplier,
                        eoEnergyAccuracy,
                        eoEnergyMaxConsumed,
                        eoEnergyMaxProduced,
                        eoEnergyDiscontinuityTime
                    }
    STATUS          current
    DESCRIPTION
        "This group contains the collection of all the objects
        related to the Energy Table."
    ::= { energyObjectMibGroups 4 }

energyObjectMibMeterCapabilitiesTableGroup OBJECT-GROUP
    OBJECTS         {
                         eoMeterCapability
                    }
    STATUS          current
    DESCRIPTION
       "This group contains the object indicating the capability
       of the Energy Object"
    ::= { energyObjectMibGroups 5 }

eoPowerEnableStatusNotificationGroup OBJECT-GROUP
    OBJECTS         { eoPowerEnableStatusNotification  }
    STATUS          current
    DESCRIPTION
       "The collection of objects that are used to enable
       notification."
    ::= { energyObjectMibGroups 6 }

energyObjectMibNotifGroup NOTIFICATION-GROUP
    NOTIFICATIONS    {
                        eoPowerStateChange
                    }
    STATUS          current
    DESCRIPTION
       "This group contains the notifications for
       the Monitoring and Control MIB for Power and Energy."
    ::= { energyObjectMibGroups 7 }

END
