BLDG-HVAC-MIB DEFINITIONS ::= BEGIN

IMPORTS
	MODULE-IDENTITY,
	Counter32,
	Gauge32,
	OBJECT-TYPE,
	Unsigned32,
	experimental
		FROM SNMPv2-SMI
	MODULE-COMPLIANCE,
	OBJECT-GROUP
		FROM SNMPv2-CONF
	TEXTUAL-CONVENTION,
	TimeStamp,
	RowStatus,
	StorageType
		FROM SNMPv2-TC
	SnmpAdminString
		FROM SNMP-FRAMEWORK-MIB;

bldgHVACMIB MODULE-IDENTITY
	LAST-UPDATED "200303270000Z"	-- Mar 27, 2003 12:00:00 AM
	ORGANIZATION "SNMPCONF working group
E-mail: snmpconf@snmp.com"
	CONTACT-INFO
		"Jon Saperia
		Postal:     JDS Consulting
		            174 Chapman Street
		            Watertown, MA 02472
		            U.S.A.
		Phone:      +1 617 744 1079
		E-mail:     saperia@jdscons.com

		Wayne Tackabury
		Postal:     Gold Wire Technology
		            411 Waverley Oaks Rd.
		            Waltham, MA 02452
		            U.S.A.
		Phone:      +1 781 398 8800
		E-mail:     wayne@goldwiretech.com





		Michael MacFaden
		Postal:     Riverstone Networks
		            5200 Great America Pkwy.
		            Santa Clara, CA 95054
		            U.S.A.
		Phone:      +1 408 878 6500
		E-mail:     mrm@riverstonenet.com

		David Partain
		Postal:     Ericsson AB
		            P.O. Box 1248
		            SE-581 12  Linkoping
		            Sweden
		E-mail:     David.Partain@ericsson.com"
	DESCRIPTION
		"This example MIB module defines a set of management objects
		for heating ventilation and air conditioning systems.  It
		also includes objects that can be used to create policies
		that are applied to rooms.  This eliminates the need to send
		per-instance configuration commands to the system.

		Copyright (C) The Internet Society (2003).  This version of
		this MIB module is part of RFC 3512; see the RFC itself for
		full legal notices."
	REVISION "200303270000Z"	-- Mar 27, 2003 12:00:00 AM
	DESCRIPTION
		"Initial version of BLDG-HVAC-MIB as published in RFC 3512."
	-- 1.3.6.1.3.122
	::= { experimental 122 }


bldgHVACObjects OBJECT IDENTIFIER 
	-- 1.3.6.1.3.122.1
	::= { bldgHVACMIB 1 }

bldgConformance OBJECT IDENTIFIER 
	-- 1.3.6.1.3.122.2
	::= { bldgHVACMIB 2 }

--
-- Textual Conventions
--

BldgHvacOperation ::= TEXTUAL-CONVENTION
	STATUS  current
	DESCRIPTION
		"Operations supported by a heating and cooling system.
		A reference to underlying general systems would go here."
	SYNTAX INTEGER {
			heat(1),
			cool(2) }


--
-- HVAC Objects Group
--

bldgHVACTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF BldgHVACEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"This table is the representation and data control
		for building HVAC by each individual office.
		The table has rows for, and is indexed by a specific
		floor and office number.  Each such row includes
		HVAC statistical and current status information for
		the associated office.  The row also contains a
		bldgHVACCfgTemplate columnar object that relates the
		bldgHVACTable row to a row in the bldgHVACCfgTemplateTable.
		If this value is nonzero, then the instance in the row
		that has a value for how the HVAC has been configured
		in the associated template (bldgHVACCfgTeplateTable row).
		Hence, the bldgHVACCfgTeplateTable row contains the
		specific configuration values for the offices as described
		in this table."
	-- 1.3.6.1.3.122.1.1
	::= { bldgHVACObjects 1 }


bldgHVACEntry OBJECT-TYPE
	SYNTAX  BldgHVACEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A row in the bldgHVACTable.  Each row represents a particular
		office in the building, qualified by its floor and office
		number.  A given row instance can be created or deleted by
		set operations  upon its bldgHVACStatus columnar
		object instance."
	INDEX {
		bldgHVACFloor,
		bldgHVACOffice }
	-- 1.3.6.1.3.122.1.1.1
	::= { bldgHVACTable 1 }


BldgHVACEntry ::= SEQUENCE {

	bldgHVACFloor             Unsigned32,
	bldgHVACOffice            Unsigned32,
	bldgHVACCfgTemplate       Unsigned32,
	bldgHVACFanSpeed          Gauge32,
	bldgHVACCurrentTemp       Gauge32,
	bldgHVACCoolOrHeatMins    Counter32,
	bldgHVACDiscontinuityTime TimeStamp,
	bldgHVACOwner             SnmpAdminString,
	bldgHVACStorageType       StorageType,
	bldgHVACStatus            RowStatus }


bldgHVACFloor OBJECT-TYPE
	SYNTAX  Unsigned32 (1..1000)
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"This portion of the index indicates the floor of the
		building.  The ground floor is considered the
		first floor.  For the purposes of this example,
		floors under the ground floor cannot be
		controlled using this MIB module."
	-- 1.3.6.1.3.122.1.1.1.1
	::= { bldgHVACEntry 1 }


bldgHVACOffice OBJECT-TYPE
	SYNTAX  Unsigned32 (1..2147483647)
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"This second component of the index specifies the
		office number."
	-- 1.3.6.1.3.122.1.1.1.2
	::= { bldgHVACEntry 2 }


bldgHVACCfgTemplate OBJECT-TYPE
	SYNTAX  Unsigned32
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The index (bldgHVACCfgTemplateIndex instance)
		of an entry in the 'bldgHVACCfgTemplateTable'.
		The bldgHVACCfgTable row instance referenced
		is a pre-made configuration 'template'
		that represents the configuration described
		by the bldgHVACCfgTemplateInfoDescr object.  Note
		that not all configurations will be under a
		defined template.  As a result, a row in this
		bldgHVACTable may point to an entry in the
		bldgHVACCfgTemplateTable that does not in turn
		have a reference (bldgHVACCfgTemplateInfo) to an
		entry in the bldgHVACCfgTemplateInfoTable.  The
		benefit of this approach is that all
		configuration information is available in one
		table whether all elements in the system are
		derived from configured templates or not.

		Where the instance value for this colunmar object
		is zero, this row represents data for an office
		whose HVAC status can be monitored using the
		read-only columnar object instances of this
		row, but is not under the configuration control





		of the agent."
	-- 1.3.6.1.3.122.1.1.1.3
	::= { bldgHVACEntry 3 }


bldgHVACFanSpeed OBJECT-TYPE
	SYNTAX  Gauge32
	UNITS	"revolutions per minute"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"Shows the revolutions per minute of the fan.  Fan speed
		will vary based on the difference between
		bldgHVACCfgTemplateDesiredTemp and bldgHVACCurrentTemp.  The
		speed is measured in revolutions of the fan blade per minute."
	-- 1.3.6.1.3.122.1.1.1.4
	::= { bldgHVACEntry 4 }


bldgHVACCurrentTemp OBJECT-TYPE
	SYNTAX  Gauge32
	UNITS	"degrees in celsius"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The current measured temperature in the office.  Should
		the current temperature be measured at a value of less
		than zero degrees celsius, a read of the instance
		for this object will return a value of zero."
	-- 1.3.6.1.3.122.1.1.1.5
	::= { bldgHVACEntry 5 }


bldgHVACCoolOrHeatMins OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"minutes"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The total number of heating or cooling minutes that have
		been consumed since the row was activated.  Notice that
		whether the minutes represent heating or cooling is a
		function of the configuration of this row.  If the system
		is re-initialized from a cooling to heating function or
		vice versa, then the counter would start over again.  This
		effect is similar to a reconfiguration of some network
		interface cards.  When parameters that impact
		configuration are changed, the subsystem must be
		re-initialized.  Discontinuities in the value of this counter
		can occur at re-initialization of the management system,
		and at other times as indicated by the value of
		bldgHVACDiscontinuityTime."
	-- 1.3.6.1.3.122.1.1.1.6
	::= { bldgHVACEntry 6 }


bldgHVACDiscontinuityTime OBJECT-TYPE
	SYNTAX  TimeStamp
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The value of sysUpTime on the most recent occasion at which
		any heating or cooling operation for the office designated
		by this row instance experienced a discontinuity.  If
		no such discontinuities have occurred since the last re-
		initialization of the this row, then this object contains a
		zero value."
	-- 1.3.6.1.3.122.1.1.1.7
	::= { bldgHVACEntry 7 }


bldgHVACOwner OBJECT-TYPE
	SYNTAX  SnmpAdminString
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The identity of the operator/system that
		last modified this entry.  When a new entry
		is created, a valid SnmpAdminString must
		be supplied.  If, on the other hand, this
		entry is populated by the agent 'discovering'
		unconfigured rooms, the empty string is a valid
		value for this object."
	-- 1.3.6.1.3.122.1.1.1.8
	::= { bldgHVACEntry 8 }


bldgHVACStorageType OBJECT-TYPE
	SYNTAX  StorageType
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The persistence of this row of the table in system storage,
		as it pertains to permanence across system resets.  A columnar
		instance of this object with value 'permanent' need not allow
		write-access to any of the columnar object instances in the
		containing row."
	-- 1.3.6.1.3.122.1.1.1.9
	::= { bldgHVACEntry 9 }


bldgHVACStatus OBJECT-TYPE
	SYNTAX  RowStatus
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"Controls and reflects the creation and activation status of
		a row in this table.

		No attempt to modify a row columnar object instance value in





		the bldgHVACTable should be issued while the value of
		bldgHVACStatus is active(1).  Should an agent receive a SET
		PDU attempting such a modification in this state, an
		inconsistentValue error should be returned as a result of
		the SET attempt."
	-- 1.3.6.1.3.122.1.1.1.10
	::= { bldgHVACEntry 10 }


--
-- HVAC Configuration Template Table
--

bldgHVACCfgTemplateInfoTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF BldgHVACCfgTemplateInfoEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"This table provides unique string identification for
		HVAC templates in a network.  If it were necessary to
		configure rooms to deliver a particular quality of climate
		control with regard to cooling or heating, the index string
		of a row in this table could be the template name.
		The bldgHVACCfgCfgTemplateInfoDescription
		contains a brief description of the template service objective
		such as: provides summer cooling settings for executive
		offices.  The bldgHVACCfgTemplateInfo in the
		bldgHVACCfgTemplateTable will contain the pointer to the
		relevant row in this table if it is intended that items
		that point to a row in the bldgHVACCfgTemplateInfoTable be
		identifiable as being under template control though this
		mechanism."
	-- 1.3.6.1.3.122.1.2
	::= { bldgHVACObjects 2 }


bldgHVACCfgTemplateInfoEntry OBJECT-TYPE
	SYNTAX  BldgHVACCfgTemplateInfoEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"Each row represents a particular template and
		description.  A given row instance can be created or
		deleted by set operations upon its
		bldgHVACCfgTemplateInfoStatus columnar object
		instance."
	INDEX {
		bldgHVACCfgTemplateInfoIndex }
	-- 1.3.6.1.3.122.1.2.1
	::= { bldgHVACCfgTemplateInfoTable 1 }


BldgHVACCfgTemplateInfoEntry ::= SEQUENCE {

	bldgHVACCfgTemplateInfoIndex    Unsigned32,
	bldgHVACCfgTemplateInfoID       SnmpAdminString,
	bldgHVACCfgTemplateInfoDescr    SnmpAdminString,
	bldgHVACCfgTemplateInfoOwner    SnmpAdminString,
	bldgHVACCfgTemplateInfoStatus   RowStatus,
	bldgHVACCfgTemplateInfoStorType StorageType }


bldgHVACCfgTemplateInfoIndex OBJECT-TYPE
	SYNTAX  Unsigned32 (1..2147483647)
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"The unique index to a row in this table."
	-- 1.3.6.1.3.122.1.2.1.1
	::= { bldgHVACCfgTemplateInfoEntry 1 }


bldgHVACCfgTemplateInfoID OBJECT-TYPE
	SYNTAX  SnmpAdminString
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"Textual identifier for this table row, and, consequently
		the template.  This should be a unique name within
		an administrative domain for a particular template so that
		all systems in a network that are under the same template
		can have the same 'handle' (e.g., 'Executive Offices',
		'Lobby Areas')."
	-- 1.3.6.1.3.122.1.2.1.2
	::= { bldgHVACCfgTemplateInfoEntry 2 }


bldgHVACCfgTemplateInfoDescr OBJECT-TYPE
	SYNTAX  SnmpAdminString
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"A general description of the template.  One example might
		be - Controls the cooling for offices on higher floors
		during the summer."
	-- 1.3.6.1.3.122.1.2.1.3
	::= { bldgHVACCfgTemplateInfoEntry 3 }


bldgHVACCfgTemplateInfoOwner OBJECT-TYPE
	SYNTAX  SnmpAdminString
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The identity of the operator/system that last modified
		this entry."
	-- 1.3.6.1.3.122.1.2.1.4
	::= { bldgHVACCfgTemplateInfoEntry 4 }


bldgHVACCfgTemplateInfoStatus OBJECT-TYPE
	SYNTAX  RowStatus
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The activation status of this row.

		No attempt to modify a row columnar object instance value in
		the bldgHVACCfgTemplateInfo Table should be issued while the
		value of bldgHVACCfgTemplateInfoStatus is active(1).
		Should an agent receive a SET PDU attempting such a modification
		in this state, an inconsistentValue error should be returned as
		a result of the SET attempt."
	-- 1.3.6.1.3.122.1.2.1.5
	::= { bldgHVACCfgTemplateInfoEntry 5 }


bldgHVACCfgTemplateInfoStorType OBJECT-TYPE
	SYNTAX  StorageType
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The persistence of this row of the table in system storage,
		 as it pertains to permanence across system resets.  A columnar
		instance of this object with value 'permanent' need not allow
		write-access to any of the columnar object instances in the
		containing row."
	-- 1.3.6.1.3.122.1.2.1.6
	::= { bldgHVACCfgTemplateInfoEntry 6 }


--
-- HVAC Configuration Template Table
--

bldgHVACCfgTemplateTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF BldgHVACCfgTemplateEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"This table contains the templates, which
		can be used to set defaults that will
		be applied to specific offices.  The application
		of those values is accomplished by having a row
		instance of the bldgHVACTable reference a row of
		this table (by the value of the former's
		bldgHVACCfgTemplate columnar instance).  Identifying
		information concerning a row instance of this table
		can be found in the columnar data of the row instance
		of the bldgHVACCfgTemplateInfoTable entry referenced
		by the bldgHVACCfgTemplateInfo columnar object of
		this table."
	-- 1.3.6.1.3.122.1.3
	::= { bldgHVACObjects 3 }


bldgHVACCfgTemplateEntry OBJECT-TYPE
	SYNTAX  BldgHVACCfgTemplateEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"Each row represents a single set of template parameters
		that can be applied to selected instances - in this case
		offices.  These policies will be turned on and off by the
		policy module through its scheduling facilities.

		A given row instance can be created or
		deleted by set operations upon its
		bldgHVACCfgTemplateStatus columnar object instance."
	INDEX {
		bldgHVACCfgTemplateIndex }
	-- 1.3.6.1.3.122.1.3.1
	::= { bldgHVACCfgTemplateTable 1 }


BldgHVACCfgTemplateEntry ::= SEQUENCE {

	bldgHVACCfgTemplateIndex       Unsigned32,
	bldgHVACCfgTemplateDesiredTemp Gauge32,
	bldgHVACCfgTemplateCoolOrHeat  BldgHvacOperation,
	bldgHVACCfgTemplateInfo        Unsigned32,
	bldgHVACCfgTemplateOwner       SnmpAdminString,
	bldgHVACCfgTemplateStorage     StorageType,
	bldgHVACCfgTemplateStatus      RowStatus }


bldgHVACCfgTemplateIndex OBJECT-TYPE
	SYNTAX  Unsigned32 (1..2147483647)
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A unique value for each defined template in this
		table.  This value can be referenced as a row index
		by any MIB module that needs access to this information.
		The bldgHVACCfgTemplate will point to entries in this
		table."
	-- 1.3.6.1.3.122.1.3.1.1
	::= { bldgHVACCfgTemplateEntry 1 }


bldgHVACCfgTemplateDesiredTemp OBJECT-TYPE
	SYNTAX  Gauge32
	UNITS	"degrees in celsius"
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"This is the desired temperature setting.  It might be
		changed at different times of the day or based on
		seasonal conditions.  It is permitted to change this value
		by first moving the row to an inactive state, making the





		change and then reactivating the row."
	-- 1.3.6.1.3.122.1.3.1.2
	::= { bldgHVACCfgTemplateEntry 2 }


bldgHVACCfgTemplateCoolOrHeat OBJECT-TYPE
	SYNTAX  BldgHvacOperation
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"This controls the heating and cooling mechanism and is
		set-able by building maintenance.  It is permitted to
		change this value by first moving the row to an inactive
		state, making the change and then reactivating the row."
	-- 1.3.6.1.3.122.1.3.1.3
	::= { bldgHVACCfgTemplateEntry 3 }


bldgHVACCfgTemplateInfo OBJECT-TYPE
	SYNTAX  Unsigned32
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"This object points to a row in the
		bldgHVACCfgTemplateInfoTable.  This controls the
		heating and cooling mechanism and is set-able by
		building maintenance.  It is permissible to change
		this value by first moving the row to an inactive
		state, making the change and then reactivating
		the row.  A value of zero means that this entry
		is not associated with a named template found
		in the bldgHVACCfgTemplateInfoTable."
	-- 1.3.6.1.3.122.1.3.1.4
	::= { bldgHVACCfgTemplateEntry 4 }


bldgHVACCfgTemplateOwner OBJECT-TYPE
	SYNTAX  SnmpAdminString
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The identity of the administrative entity
		that created this row of the table."
	-- 1.3.6.1.3.122.1.3.1.5
	::= { bldgHVACCfgTemplateEntry 5 }


bldgHVACCfgTemplateStorage OBJECT-TYPE
	SYNTAX  StorageType
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The persistence of this row of the table across
		system resets.  A columnar instance of this object with
		value 'permanent' need not allow write-access to any
		of the columnar object instances in the containing row."
	-- 1.3.6.1.3.122.1.3.1.6
	::= { bldgHVACCfgTemplateEntry 6 }


bldgHVACCfgTemplateStatus OBJECT-TYPE
	SYNTAX  RowStatus
	MAX-ACCESS read-create
	STATUS  current
	DESCRIPTION
		"The activation status of this row of the table.

		No attempt to modify a row columnar object instance value in
		the bldgHVACCfgTemplateTable should be issued while the
		value of bldgHVACCfgTemplateStatus is active(1).
		Should an agent receive a SET PDU attempting such a modification
		in this state, an inconsistentValue error should be returned as
		a result of the SET attempt."
	-- 1.3.6.1.3.122.1.3.1.7
	::= { bldgHVACCfgTemplateEntry 7 }


--
-- Conformance Information
--

bldgCompliances OBJECT IDENTIFIER 
	-- 1.3.6.1.3.122.2.1
	::= { bldgConformance 1 }

bldgGroups OBJECT IDENTIFIER 
	-- 1.3.6.1.3.122.2.2
	::= { bldgConformance 2 }


-- Compliance Statements

bldgCompliance MODULE-COMPLIANCE
	STATUS  current
	DESCRIPTION
		"The requirements for conformance to the BLDG-HVAC-MIB.  The
		bldgHVACObjects group must be implemented to conform to the
		BLDG-HVAC-MIB."

	MODULE 

	GROUP bldgHVACObjectsGroup
	  DESCRIPTION
		"The bldgHVACObjects is mandatory for all systems that
		support HVAC systems."
	-- 1.3.6.1.3.122.2.1.1
	::= { bldgCompliances 1 }

bldgHVACObjectsGroup OBJECT-GROUP
	OBJECTS {
		bldgHVACCfgTemplate,
		bldgHVACFanSpeed,
		bldgHVACCurrentTemp,
		bldgHVACCoolOrHeatMins,
		bldgHVACDiscontinuityTime,
		bldgHVACOwner,
		bldgHVACStatus,
		bldgHVACStorageType,
		bldgHVACCfgTemplateInfoID,
		bldgHVACCfgTemplateInfoDescr,
		bldgHVACCfgTemplateInfoOwner,
		bldgHVACCfgTemplateInfoStatus,
		bldgHVACCfgTemplateInfoStorType,
		bldgHVACCfgTemplateDesiredTemp,
		bldgHVACCfgTemplateCoolOrHeat,
		bldgHVACCfgTemplateInfo,
		bldgHVACCfgTemplateOwner,
		bldgHVACCfgTemplateStorage,
		bldgHVACCfgTemplateStatus }
	STATUS  current
	DESCRIPTION
		"The bldgHVACObjects Group."
	-- 1.3.6.1.3.122.2.2.1
	::= { bldgGroups 1 }

END
