idnits 2.17.1 draft-ietf-eman-battery-mib-18.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 24, 2015) is 3321 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 5226 (Obsoleted by RFC 8126) Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group J. Quittek 3 Internet-Draft R. Winter 4 Intended status: Standards Track T. Dietz 5 Expires: September 25, 2015 NEC Europe Ltd. 6 March 24, 2015 8 Definition of Managed Objects for Battery Monitoring 9 draft-ietf-eman-battery-mib-18 11 Abstract 13 This memo defines a portion of the Management Information Base (MIB) 14 for use with network management protocols in the Internet community. 15 In particular, it defines managed objects that provide information on 16 the status of batteries in managed devices. 18 Status of this Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at http://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on September 25, 2015. 35 Copyright Notice 37 Copyright (c) 2015 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (http://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 54 2. The Internet-Standard Management Framework . . . . . . . . . . 6 56 3. Design of the Battery MIB Module . . . . . . . . . . . . . . . 7 57 3.1. MIB Module Structure . . . . . . . . . . . . . . . . . . . 7 58 3.2. Battery Technologies . . . . . . . . . . . . . . . . . . . 9 59 3.2.1. Guidelines for Adding Battery Technologies . . . . . . 10 60 3.3. Battery Identification . . . . . . . . . . . . . . . . . . 10 61 3.4. Charging Cycles . . . . . . . . . . . . . . . . . . . . . 11 62 3.5. Imported Definitions . . . . . . . . . . . . . . . . . . . 11 64 4. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 11 66 5. Security Considerations . . . . . . . . . . . . . . . . . . . 33 68 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 69 6.1. SMI Object Identifier Registration . . . . . . . . . . . . 36 70 6.2. Battery Technology Registration . . . . . . . . . . . . . 36 72 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 37 74 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 37 75 8.1. Normative References . . . . . . . . . . . . . . . . . . . 37 76 8.2. Informative References . . . . . . . . . . . . . . . . . . 38 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 38 80 1. Introduction 82 Today, more and more managed devices contain batteries that supply 83 them with power when disconnected from electrical power distribution 84 grids. Common examples are nomadic and mobile devices, such as 85 notebook computers, netbooks, and smart phones. The status of 86 batteries in such a device, particularly the charging status is 87 typically controlled by automatic functions that act locally on the 88 device and manually by users of the device. 90 In addition to this, there is a need to monitor battery status of 91 these devices by network management systems. This document defines a 92 portion of the Management Information Base (MIB) that provides a 93 means for monitoring batteries in or attached to managed devices. 94 The Battery MIB module defined in Section 4 meets the requirements 95 for monitoring the status of batteries specified in RFC 6988 96 [RFC6988]. 98 The Battery MIB module provides for monitoring the battery status. 99 According to the framework for energy management [RFC7326] it is an 100 Energy Managed Object, and thus, MIB modules such as the Power and 101 Energy Monitoring MIB [RFC7460] could in principle be implemented for 102 batteries. The Battery MIB extends the more generic aspects of 103 energy management by adding battery-specific information. Amongst 104 other things, the Battery MIB enables the monitoring of: 106 o the current charge of a battery, 107 o the age of a battery (charging cycles), 108 o the state of a battery (e.g. being re-charged), 109 o last usage of a battery, 110 o maximum energy provided by a battery (remaining and total 111 capacity). 113 Further, means are provided for battery-powered devices to send 114 notifications when the current battery charge has dropped below a 115 certain threshold to inform the management system of needed 116 replacement. The same applies to the age of a battery. 118 Many battery-driven devices have existing instrumentation for 119 monitoring the battery status because this is already needed for 120 local control of the battery by the device. This reduces the effort 121 for implementing the managed objects defined in this document. For 122 many devices only additional software will be needed but no 123 additional hardware instrumentation for battery monitoring. 125 Since there are a lot of devices in use that contain more than one 126 battery, means for battery monitoring defined in this document 127 support addressing multiple batteries within a single device. Also, 128 batteries today often come in packages that can include 129 identification and might contain additional hardware and firmware. 130 The former allows tracing a battery and allows continuous monitoring 131 even if the battery is installed in another device. The firmware 132 version is useful information as the battery behavior might be 133 different for different firmware versions. 135 Not explicitly in scope of definitions in this document are very 136 small backup batteries, such as for example, batteries used on PC 137 motherboard to run the clock circuit and retain configuration memory 138 while the system is turned off. Other means may be required for 139 reporting on these batteries. However, the MIB module defined in 140 Section 3.1 can be used for this purpose. 142 A traditional type of managed device containing batteries is an 143 Uninterruptible Power Supply (UPS) system; these supply other devices 144 with electrical energy when the main power supply fails. There is 145 already a MIB module for managing UPS systems defined in RFC 1628 146 [RFC1628]. The UPS MIB module includes managed objects for 147 monitoring the batteries contained in an UPS system. However, the 148 information provided by the UPS MIB objects is limited and tailored 149 the particular needs of UPS systems. 151 There is a huge variety of battery technologies and it is evolving in 152 time. For different applications, different battery technologies are 153 preferable, for example, because of different weight, cost, 154 robustness, charging time, etc. Some technologies, such as lead acid 155 batteries are constantly in use for decades, while others, such as 156 nickel based battery technologies (nickel-cadmium, nickel-metal 157 hydride) have to a wide extend been replaced by lithium based battery 158 technologies (lithium-ion, lithium polymer). 160 The Battery MIB module uses a generic abstraction of batteries that 161 is independent of particular battery technologies and expected to be 162 applicable to future technologies as well. While identification of a 163 particular battery technology is supported by an extensible list of 164 battery technology identifiers (see Section 3.2), individual 165 properties of the technologies are not modelled by the abstraction. 166 In particular, methods for charging a battery and their parameters, 167 that vary a lot between different technologies, are not individually 168 modelled. 170 Instead, the Battery MIB module uses a simple common charging model 171 with batteries being in one of the states 'charging', 'maintaining 172 charge', 'not charging', and 'discharging'. Control of the charging 173 process is limited to requests for transitions between these states. 174 For charging controllers that use charging state engines with more 175 states, implementations of the Battery MIB module need to map those 176 states to the four listed ones. 178 For energy management systems that require finer grained control of 179 the battery charging process, additional means need to be developed, 180 such as, for example, MIB modules that model richer sets of charging 181 states and parameters for charging states. 183 All use cases sketched above assume that the batteries are contained 184 in a managed entity. In a typical case, this entity also hosts the 185 SNMP applications (command responder, notification generator) and the 186 charging controller for contained batteries. For definitions in this 187 document it is not strictly required that batteries are contained in 188 the same managed entity, even though the BATTERY-MIB module, that is 189 defined further below, uses the containment tree of the ENTITY-MIB 190 module [RFC6933] for battery indexing. 192 External batteries can be supported as long as the charging 193 controller for these batteries is connected to the SNMP applications 194 that implement the BATTERY-MIB module. An example with an external 195 battery is shown in the figure below. It illustrates that the 196 BATTERY-MIB module is designed as interface between management system 197 and battery charging controller. Out of scope of this document is 198 the interface between the battery charging controller and controlled 199 batteries. 201 +-----------------------------------+ 202 | management system | 203 +-----------------+-----------------+ 204 | 205 | BATTERY-MIB 206 | 207 +-----------------+-----------------+ 208 | managed element | | 209 | | | 210 | +--------------+--------------+ | 211 | | battery charging controller | | 212 | +-----+--------------+--------+ | 213 | | | | 214 | +-----+-----+ | | 215 | | internal | | | 216 | | battery | | | 217 | +-----------+ | | 218 +-----------------------+-----------+ 219 | 220 +-----+-----+ 221 | external | 222 | battery | 223 +-----------+ 225 Figure 1: The BATTERY-MIB as interface between management system and 226 battery charging controller supporting external batteries. 228 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 229 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 230 "OPTIONAL" in this document are to be interpreted as described in RFC 231 2119 [RFC2119]. 233 2. The Internet-Standard Management Framework 235 For a detailed overview of the documents that describe the current 236 Internet-Standard Management Framework, please refer to section 7 of 237 RFC 3410 [RFC3410]. 239 Managed objects are accessed via a virtual information store, termed 240 the Management Information Base or MIB. MIB objects are generally 241 accessed through the Simple Network Management Protocol (SNMP). 242 Objects in the MIB are defined using the mechanisms defined in the 243 Structure of Management Information (SMI). This memo specifies MIB 244 modules that are compliant to the SMIv2, which is described in STD 245 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58,RFC 246 2580 [RFC2580]. 248 3. Design of the Battery MIB Module 250 3.1. MIB Module Structure 252 The Battery MIB module defined in this document defines objects for 253 reporting information about batteries. All managed objects providing 254 information of the status of a battery are contained in a single 255 table called batteryTable. The batteryTable contains one conceptual 256 row per battery. 258 Batteries are indexed by the entPhysicalIndex of the entPhysicalTable 259 defined in the ENTITY-MIB module [RFC6933]. An implementation of the 260 ENTITY-MIB module complying with the entity4CRCompliance MODULE- 261 COMPLIANCE statement is required for compliant implementations of the 262 BATTERY-MIB module. 264 If a battery is replaced, and the replacing battery uses the same 265 physical connector as the replaced battery, then the replacing 266 battery MUST be indexed with the same value of object 267 entPhysicalIndex as the replaced battery. 269 The kind of entity in the entPhysicalTable of the Entity MIB module 270 is indicated by the value of enumeration object entPhysicalClass. 271 All batteries SHOULD have the value of object entPhysicalClass set to 272 battery(14) in their row of the entPhysicalTable. 274 The batteryTable contains three groups of objects. The first group 275 (OIDs ending with 1-9) provides information on static properties of 276 the battery. The second group of objects (OIDs ending with 10-18) 277 provides information on the current battery state, if it is charging 278 or discharging, how much it is charged, its remaining capacity, the 279 number of experienced charging cycles, etc. 281 batteryTable(1) 282 +--batteryEntry(1) [entPhysicalIndex] 283 +-- r-n SnmpAdminString batteryIdentifier(1) 284 +-- r-n SnmpAdminString batteryFirmwareVersion(2) 285 +-- r-n Enumeration batteryType(3) 286 +-- r-n Unsigned32 batteryTechnology(4) 287 +-- r-n Unsigned32 batteryDesignVoltage(5) 288 +-- r-n Unsigned32 batteryNumberOfCells(6) 289 +-- r-n Unsigned32 batteryDesignCapacity(7) 290 +-- r-n Unsigned32 batteryMaxChargingCurrent(8) 291 +-- r-n Unsigned32 batteryTrickleChargingCurrent(9) 292 +-- r-n Unsigned32 batteryActualCapacity(10) 293 +-- r-n Unsigned32 batteryChargingCycleCount(11) 294 +-- r-n DateAndTime batteryLastChargingCycleTime(12) 295 +-- r-n Enumeration batteryChargingOperState(13) 296 +-- rwn Enumeration batteryChargingAdminState(14) 297 +-- r-n Unsigned32 batteryActualCharge(15) 298 +-- r-n Unsigned32 batteryActualVoltage(16) 299 +-- r-n Integer32 batteryActualCurrent(17) 300 +-- r-n Integer32 batteryTemperature(18) 301 +-- rwn Unsigned32 batteryAlarmLowCharge(19) 302 +-- rwn Unsigned32 batteryAlarmLowVoltage(20) 303 +-- rwn Unsigned32 batteryAlarmLowCapacity(21) 304 +-- rwn Unsigned32 batteryAlarmHighCycleCount(22) 305 +-- rwn Integer32 batteryAlarmHighTemperature(23) 306 +-- rwn Integer32 batteryAlarmLowTemperature(24) 307 +-- r-n SnmpAdminString batteryCellIdentifier(25) 309 The third group of objects in this table (OIDs ending with 19-25) is 310 used for notifications. Threshold objects (OIDs ending with 19-24) 311 indicate thresholds which can be used to raise an alarm if a property 312 of the battery exceeds one of them. Raising an alarm may include 313 sending a notification. 315 The Battery MIB defines seven notifications for indicating 317 1. a battery charging state change that was not triggered by writing 318 to object batteryChargingAdminState, 319 2. a low battery charging state, 320 3. a critical battery state in which it cannot be used for power 321 supply, 322 4. an aged battery that may need to be replaced, 323 5. a battery exceed a temperature threshold, 324 6. a battery that has been connected, 325 7. disconnection of one or more batteries. 327 Notifications 2.-5. can use object batteryCellIdentifier to indicate 328 a specific cell or a set of cells within the battery that have 329 triggered the notification. 331 3.2. Battery Technologies 333 Static information in the batteryTable includes battery type and 334 technology. The battery type distinguishes primary (not 335 rechargeable) batteries from rechargeable (secondary) batteries and 336 capacitors. The battery technology describes the actual technology 337 of a battery, which typically is a chemical technology. 339 Since battery technologies are subject of intensive research and 340 widely used technologies are often replaced by successor technologies 341 within an few years, the list of battery technologies was not chosen 342 as a fixed list. Instead, IANA has created a registry for battery 343 technologies at http://www.iana.org/assignments/battery-technologies 344 where numbers are assigned to battery technologies (TBD). 346 [NOTE for IANA: Please modify the URL above if you choose a different 347 one, see section on IANA Considerations below.] 349 The table below shows battery technologies known today that are in 350 commercial use with the numbers assigned to them by IANA. New 351 entries can be added to the IANA registry if new technologies are 352 developed or if missing technologies are identified. Note that there 353 exists a huge number of battery types that are not listed in the IANA 354 registry. Many of them are experimental or cannot be used in an 355 economically useful way. New entries should be added to the IANA 356 registry only if the respective technologies are in commercial use 357 and relevant to standardized battery monitoring over the Internet. 359 +--------------------------------+----------+ 360 | battery technology | assigned | 361 | | number | 362 +--------------------------------+----------+ 363 | Unknown | 1 | 364 | Other | 2 | 365 | Zinc-carbon | 3 | 366 | Zinc chloride | 4 | 367 | Nickel oxyhydroxide | 5 | 368 | Lithium-copper oxide | 6 | 369 | Lithium-iron disulfide | 7 | 370 | Lithium-manganese dioxide | 8 | 371 | Zinc-air | 9 | 372 | Silver oxide | 10 | 373 | Alkaline | 11 | 374 | Lead acid | 12 | 375 | Valve-Regulated Lead Acid, Gel | 13 | 376 | Valve-Regulated Lead Acid, AGM | 14 | 377 | Nickel-cadmium | 15 | 378 | Nickel-metal hydride | 16 | 379 | Nickel-zinc | 17 | 380 | Lithium-ion | 18 | 381 | Lithium polymer | 19 | 382 | Double layer capacitor | 20 | 383 +--------------------------------+----------+ 385 3.2.1. Guidelines for Adding Battery Technologies 387 New entries can be added to the IANA registry if new technologies are 388 developed or if missing technologies are identified. Note that there 389 exists a huge number of battery types that are not listed in the IANA 390 registry. Many of them are experimental or cannot be used in an 391 economically useful way. New entries should be added to the IANA 392 registry only if the respective technologies are in commercial use 393 and relevant to standardized battery monitoring over the Internet. 395 3.3. Battery Identification 397 There are two identifiers to be used: The entPhysicalUUID defined in 398 the ENTITY-MIB [RFC6933] module and the batteryIdentifier defined in 399 this module. A battery is linked to an entPhysicalUUID through the 400 shared entPhysicalIndex. 402 The batteryIdentifier uniquely identifies the battery itself while 403 the entPhysicalUUID identifies the slot of the device in which the 404 battery is (currently) contained. For a non-replaceable battery both 405 identifiers are always linked to the same physical battery. But for 406 batteries that can be replaced, the identifiers have different 407 functions. 409 The entPhysicalUUID is always the same for a certain battery slot of 410 a containing device even if the contained battery is replaced by 411 another one. The batteryIdentifier is a representation of the 412 battery identifier set by the battery manufacturer. It is tied to 413 the battery and usually cannot be changed. 415 Many manufacturers deliver not just plain batteries but battery 416 packages including additional hardware and firmware. Typically, 417 these modules include an battery identifier that can by retrieved by 418 a device in which a battery has been installed. The value of the 419 object batteryIdentifier is an exact representation of this 420 identifier. The batteryIdentifier is useful when batteries are 421 removed and re-installed in the same device or in other devices. 422 Then the device or the network management system can trace batteries 423 and achieve continuity of battery monitoring. 425 3.4. Charging Cycles 427 The lifetime of a battery can be approximated using the measure of 428 charging cycles. A commonly used definition of a charging cycle is 429 the amount of discharge equal to the design (or nominal) capacity of 430 the battery [SBS]. This means that a single charging cycle may 431 include several steps of partial charging and discharging until the 432 amount of discharging has reached the design capacity of the battery. 433 After that the next charging cycle immediately starts. 435 3.5. Imported Definitions 437 The Battery MIB module defined in this document imports definitions 438 from the following MIB modules: SNMPv2-SMI [RFC2578], SNMPv2-TC 439 [RFC2579], SNMPv2-CONF [RFC2580], SNMP-FRAMEWORK-MIB [RFC3411], 440 ENTITY-MIB [RFC6933]. 442 4. Definitions 444 BATTERY-MIB DEFINITIONS ::= BEGIN 446 IMPORTS 447 MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, 448 mib-2, Integer32, Unsigned32 449 FROM SNMPv2-SMI -- RFC2578 450 SnmpAdminString 451 FROM SNMP-FRAMEWORK-MIB -- RFC3411 452 DateAndTime 453 FROM SNMPv2-TC -- RFC2579 455 MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP 456 FROM SNMPv2-CONF -- RFC2580 457 entPhysicalIndex 458 FROM ENTITY-MIB; -- RFC6933 460 batteryMIB MODULE-IDENTITY 461 LAST-UPDATED "201411301200Z" -- 30 November 2014 462 ORGANIZATION "IETF EMAN Working Group" 463 CONTACT-INFO 464 "General Discussion: eman@ietf.org 465 To Subscribe: http://www.ietf.org/mailman/listinfo/eman 466 Archive: http://www.ietf.org/mail-archive/web/eman 468 Editor: 469 Juergen Quittek 470 NEC Europe Ltd. 471 NEC Laboratories Europe 472 Kurfuersten-Anlage 36 473 69115 Heidelberg 474 Germany 475 Tel: +49 6221 4342-115 476 Email: quittek@neclab.eu" 478 DESCRIPTION 479 "This MIB module defines a set of objects for monitoring 480 batteries of networked devices and of their components. 482 Copyright (c) 2014 IETF Trust and the persons identified as 483 authors of the code. All rights reserved. 485 Redistribution and use in source and binary forms, with or 486 without modification, is permitted pursuant to, and subject 487 to the license terms contained in, the Simplified BSD 488 License set forth in Section 4.c of the IETF Trust's Legal 489 Provisions Relating to IETF Documents 490 (http://trustee.ietf.org/license-info). 492 This version of this MIB module is part of RFC yyyy; see 493 the RFC itself for full legal notices." 494 -- replace yyyy with actual RFC number & remove this notice 496 -- Revision history 498 REVISION "201411301200Z" -- 30 November 2014 499 DESCRIPTION 500 "Initial version, published as RFC yyyy." 501 -- replace yyyy with actual RFC number & remove this notice 502 ::= { mib-2 zzz } 503 -- zzz to be assigned by IANA. 505 --****************************************************************** 506 -- Top Level Structure of the MIB module 507 --****************************************************************** 509 batteryNotifications OBJECT IDENTIFIER ::= { batteryMIB 0 } 510 batteryObjects OBJECT IDENTIFIER ::= { batteryMIB 1 } 511 batteryConformance OBJECT IDENTIFIER ::= { batteryMIB 2 } 513 --================================================================== 514 -- 1. Object Definitions 515 --================================================================== 517 -------------------------------------------------------------------- 518 -- 1.1. Battery Table 519 -------------------------------------------------------------------- 520 batteryTable OBJECT-TYPE 521 SYNTAX SEQUENCE OF BatteryEntry 522 MAX-ACCESS not-accessible 523 STATUS current 524 DESCRIPTION 525 "This table provides information on batteries. It contains 526 one conceptual row per battery in a managed entity. 528 Batteries are indexed by the entPhysicalIndex of the 529 entPhysicalTable defined in the ENTITY-MIB (RFC6933). 531 For implementations of the BATTERY-MIB an implementation of 532 the ENTITY-MIB complying with the entity4CRCompliance 533 MODULE-COMPLIANCE statement of the ENTITY-MIB is required. 535 If batteries are replaced, and the replacing battery uses 536 the same physical connector as the replaced battery, then 537 the replacing battery SHOULD be indexed with the same value 538 of object entPhysicalIndex as the replaced battery." 539 ::= { batteryObjects 1 } 541 batteryEntry OBJECT-TYPE 542 SYNTAX BatteryEntry 543 MAX-ACCESS not-accessible 544 STATUS current 545 DESCRIPTION 546 "An entry providing information on a battery." 547 INDEX { entPhysicalIndex } 548 ::= { batteryTable 1 } 550 BatteryEntry ::= 551 SEQUENCE { 552 batteryIdentifier SnmpAdminString, 553 batteryFirmwareVersion SnmpAdminString, 554 batteryType INTEGER, 555 batteryTechnology Unsigned32, 556 batteryDesignVoltage Unsigned32, 557 batteryNumberOfCells Unsigned32, 558 batteryDesignCapacity Unsigned32, 559 batteryMaxChargingCurrent Unsigned32, 560 batteryTrickleChargingCurrent Unsigned32, 561 batteryActualCapacity Unsigned32, 562 batteryChargingCycleCount Unsigned32, 563 batteryLastChargingCycleTime DateAndTime, 564 batteryChargingOperState INTEGER, 565 batteryChargingAdminState INTEGER, 566 batteryActualCharge Unsigned32, 567 batteryActualVoltage Unsigned32, 568 batteryActualCurrent Integer32, 569 batteryTemperature Integer32, 570 batteryAlarmLowCharge Unsigned32, 571 batteryAlarmLowVoltage Unsigned32, 572 batteryAlarmLowCapacity Unsigned32, 573 batteryAlarmHighCycleCount Unsigned32, 574 batteryAlarmHighTemperature Integer32, 575 batteryAlarmLowTemperature Integer32, 576 batteryCellIdentifier SnmpAdminString 577 } 579 batteryIdentifier OBJECT-TYPE 580 SYNTAX SnmpAdminString 581 MAX-ACCESS read-only 582 STATUS current 583 DESCRIPTION 584 "This object contains an identifier for the battery. 586 Many manufacturers deliver not only simple batteries but 587 battery packages including additional hardware and firmware. 588 Typically, these modules include an identifier that can be 589 retrieved by a device in which a battery has been installed. 590 The identifier is useful when batteries are removed and 591 re-installed in the same or other devices. Then the device 592 or the network management system can trace batteries and 593 achieve continuity of battery monitoring. 595 If the battery is identified by more than one value, 596 for example, by a model number and a serial number, 597 then the value of this object is a concatenation of these 598 values, separated by the colon symbol ':'. The values 599 should be ordered that a more significant value comes 600 before a less significant one. In the example above, the 601 (more significant) model number would be first, the serial 602 number would follow: ':'. 604 If the battery identifier cannot be represented using the 605 ISO/IEC IS 10646-1 character set, then a hexadecimal 606 encoding of a binary representation of the entire battery 607 identifier must be used. 609 The value of this object must be an empty string if there 610 is no battery identifier or if the battery identifier is 611 unknown." 612 ::= { batteryEntry 1 } 614 batteryFirmwareVersion OBJECT-TYPE 615 SYNTAX SnmpAdminString 616 MAX-ACCESS read-only 617 STATUS current 618 DESCRIPTION 619 "This object indicates the version number of the firmware 620 that is included in a battery module. 622 Many manufacturers deliver not pure batteries but battery 623 packages including additional hardware and firmware. 625 Since the behavior of the battery may change with the 626 firmware, it may be useful to retrieve the firmware version 627 number. 629 The value of this object must be an empty string if there 630 is no firmware or if the version number of the firmware is 631 unknown." 632 ::= { batteryEntry 2 } 634 batteryType OBJECT-TYPE 635 SYNTAX INTEGER { 636 unknown(1), 637 other(2), 638 primary(3), 639 rechargeable(4), 640 capacitor(5) 641 } 642 MAX-ACCESS read-only 643 STATUS current 644 DESCRIPTION 645 "This object indicates the type of battery. 647 It distinguishes between primary (not rechargeable) 648 batteries, rechargeable (secondary) batteries, and 649 capacitors. Capacitors are not really batteries but 650 often used in the same way as a battery. 652 The value other(2) can be used if the battery type is known 653 but none of the ones above. Value unknown(1) is to be used 654 if the type of battery cannot be determined." 655 ::= { batteryEntry 3 } 657 batteryTechnology OBJECT-TYPE 658 SYNTAX Unsigned32 659 MAX-ACCESS read-only 660 STATUS current 661 DESCRIPTION 662 "This object indicates the technology used by the battery. 663 Numbers identifying battery types are registered at IANA. 664 A current list of assignments can be found at 665 . 667 Value 1 (unknown) MUST be used if the type of battery 668 cannot be determined. 670 Value 2 (other) can be used if the battery type is known 671 but not one of the types already registered at IANA." 672 ::= { batteryEntry 4 } 674 batteryDesignVoltage OBJECT-TYPE 675 SYNTAX Unsigned32 676 UNITS "millivolt" 677 MAX-ACCESS read-only 678 STATUS current 679 DESCRIPTION 680 "This object provides the design (or nominal) voltage of the 681 battery in units of millivolt (mV). 683 Note that the design voltage is a constant value and 684 typically different from the actual voltage of the battery. 686 A value of 0 indicates that the design voltage is unknown." 687 ::= { batteryEntry 5 } 689 batteryNumberOfCells OBJECT-TYPE 690 SYNTAX Unsigned32 691 MAX-ACCESS read-only 692 STATUS current 693 DESCRIPTION 694 "This object indicates the number of cells contained in the 695 battery. 697 A value of 0 indicates that the number of cells is unknown." 698 ::= { batteryEntry 6 } 700 batteryDesignCapacity OBJECT-TYPE 701 SYNTAX Unsigned32 702 UNITS "milliampere hours" 703 MAX-ACCESS read-only 704 STATUS current 705 DESCRIPTION 706 "This object provides the design (or nominal) capacity of 707 the battery in units of milliampere hours (mAh). 709 Note that the design capacity is a constant value and 710 typically different from the actual capacity of the battery. 711 Usually, this is a value provided by the manufacturer of the 712 battery. 714 A value of 0 indicates that the design capacity is 715 unknown." 716 ::= { batteryEntry 7 } 718 batteryMaxChargingCurrent OBJECT-TYPE 719 SYNTAX Unsigned32 720 UNITS "milliampere" 721 MAX-ACCESS read-only 722 STATUS current 723 DESCRIPTION 724 "This object provides the maximal current to be used for 725 charging the battery in units of milliampere (mA). 727 Note that the maximal charging current may not lead to 728 optimal charge of the battery and that some batteries can 729 only be charged with the maximal current for a limited 730 amount of time. 732 A value of 0 indicates that the maximal charging current is 733 unknown." 734 ::= { batteryEntry 8 } 736 batteryTrickleChargingCurrent OBJECT-TYPE 737 SYNTAX Unsigned32 738 UNITS "milliampere" 739 MAX-ACCESS read-only 740 STATUS current 741 DESCRIPTION 742 "This object provides the recommended average current 743 to be used for trickle charging the battery in units of 744 milliampere (mA). 746 Typically, this is a value recommended by the manufacturer 747 of the battery or by the manufacturer of the charging 748 circuit. 750 A value of 0 indicates that the recommended trickle charging 751 current is unknown." 752 ::= { batteryEntry 9 } 754 batteryActualCapacity OBJECT-TYPE 755 SYNTAX Unsigned32 756 UNITS "milliampere hours" 757 MAX-ACCESS read-only 758 STATUS current 759 DESCRIPTION 760 "This object provides the actual capacity of the 761 battery in units of milliampere hours (mAh). 763 Typically, the actual capacity of a battery decreases 764 with time and with usage of the battery. It is usually 765 lower than the design capacity 767 Note that the actual capacity needs to be measured and is 768 typically an estimate based on observed discharging and 769 charging cycles of the battery. 771 A value of 'ffffffff'H indicates that the actual capacity 772 cannot be determined." 773 ::= { batteryEntry 10 } 775 batteryChargingCycleCount OBJECT-TYPE 776 SYNTAX Unsigned32 777 MAX-ACCESS read-only 778 STATUS current 779 DESCRIPTION 780 "This object indicates the number of completed charging 781 cycles that the battery underwent. In line with the 782 Smart Battery Data Specification Revision 1.1, a charging 783 cycle is defined as the process of discharging the battery 784 by a total amount equal to the battery design capacity as 785 given by object batteryDesignCapacity. A charging cycle 786 may include several steps of charging and discharging the 787 battery until the discharging amount given by 788 batteryDesignCapacity has been reached. As soon as a 789 charging cycle has been completed the next one starts 790 immediately independent of the battery's current charge at 791 the end of the cycle. 793 For batteries of type primary(3) the value of this object is 794 always 0. 796 A value of 'ffffffff'H indicates that the number of charging 797 cycles cannot be determined." 798 ::= { batteryEntry 11 } 800 batteryLastChargingCycleTime OBJECT-TYPE 801 SYNTAX DateAndTime 802 MAX-ACCESS read-only 803 STATUS current 804 DESCRIPTION 805 "The date and time of the last charging cycle. The value 806 '0000000000000000'H is returned if the battery has not been 807 charged yet or if the last charging time cannot be 808 determined. 810 For batteries of type primary(1) the value of this object is 811 always '0000000000000000'H." 812 ::= { batteryEntry 12 } 814 batteryChargingOperState OBJECT-TYPE 815 SYNTAX INTEGER { 816 unknown(1), 817 charging(2), 818 maintainingCharge(3), 819 noCharging(4), 820 discharging(5) 821 } 822 MAX-ACCESS read-only 823 STATUS current 824 DESCRIPTION 825 "This object indicates the current charging state of the 826 battery. 828 Value unknown(1) indicates that the charging state of the 829 battery cannot be determined. 831 Value charging(2) indicates that the battery is being 832 charged in a way that the charge of the battery increases. 834 Value maintainingCharge(3) indicates that the battery is 835 being charged with a low average current that compensates 836 self-discharging. This includes trickle charging, float 837 charging and other methods for maintaining the current 838 charge of a battery. In typical implementations of charging 839 controllers, state maintainingCharge(3) is only applied 840 if the battery is fully charged or almost fully charged. 842 Value noCharging(4) indicates that the battery is not being 843 charged or discharged by electric current between the 844 battery and electric circuits external to the battery. 845 Note that the battery may still be subject to 846 self-discharging. 848 Value discharging(5) indicates that the battery is being 849 discharged and that the charge of the battery decreases." 850 ::= { batteryEntry 13 } 852 batteryChargingAdminState OBJECT-TYPE 853 SYNTAX INTEGER { 854 notSet(1), 855 charge(2), 856 chargeAndMaintainCharge(3), 857 doNotCharge(4), 858 discharge(5) 859 } 860 MAX-ACCESS read-write 861 STATUS current 862 DESCRIPTION 863 "The value of this object indicates the desired 864 charging state of the battery. The real state is 865 indicated by object batteryChargingOperState. See the 866 definition of object batteryChargingOperState for a 867 description of the values. 869 When this object is initialized by an implementation of the 870 BATTERY-MIB module, its value is set to notSet(1). 872 However, a SET request can only set this object to either 873 charge(2), chargeAndMaintainCharge(3), doNotCharge(4), or 874 discharge(5). Attempts to set this object to notSet(1) 875 will always fail with an 'inconsistentValue' error. 877 When the batteryChargingAdminState object is set, then the 878 BATTERY-MIB implementation must try to set the battery 879 to the indicated state. The result will be indicated by 880 object batteryChargingOperState. 882 Setting object batteryChargingAdminState to value 883 chargeAndMaintainCharge(3) is a request for first 884 charging the battery in state charging(2) and then 885 entering state maintainingCharge(3). If the battery 886 is already fully charged or almost fully charged, 887 then setting object batteryChargingAdminState to value 888 chargeAndMaintainCharge(3) is a request for entering 889 state maintainingCharge(3). 891 Setting object batteryChargingAdminState to value 892 charge(2) is a request for first entering operational 893 state charging(2) until the battery is fully charged 894 and then entering operational state noCharging(4). 895 When operational state noCharging(4) is entered, the 896 value of object batteryChargingAdminState is reset to 897 notSet(1). 898 If the battery is already fully charged or almost fully 899 charged, then setting object batteryChargingAdminState 900 to value charge(2) is a request for entering state 901 noCharging(4). When operational state noCharging(4) is 902 entered, the value of object batteryChargingAdminState 903 is reset to notSet(1). 905 Setting object batteryChargingAdminState to value 906 doNotCharge(4) is a request for entering operational 907 state noCharging(4). 909 Setting object batteryChargingAdminState to value 910 discharge(5) is a request for entering operational 911 state discharging(5). 913 Due to operational conditions and limitations of the 914 implementation of the BATTERY-MIB module, changing the 915 battery status according to a set value of object 916 batteryChargingAdminState may not be possible. 918 Setting the value of object batteryChargingAdminState 919 may result in not changing the state of the battery 920 to this value or even in setting the charging state 921 to another value than the requested one. For example, 922 the charging controller might at any time decide to 923 enter state discharging(5), if there is an operational 924 need to use the battery for supplying power." 925 ::= { batteryEntry 14 } 927 batteryActualCharge OBJECT-TYPE 928 SYNTAX Unsigned32 929 UNITS "milliampere hours" 930 MAX-ACCESS read-only 931 STATUS current 932 DESCRIPTION 933 "This object provides the actual charge of the battery 934 in units of milliampere hours (mAh). 936 Note that the actual charge needs to be measured and is 937 typically an estimate based on observed discharging and 938 charging cycles of the battery. 940 A value of 'ffffffff'H indicates that the actual charge 941 cannot be determined." 942 ::= { batteryEntry 15 } 944 batteryActualVoltage OBJECT-TYPE 945 SYNTAX Unsigned32 946 UNITS "millivolt" 947 MAX-ACCESS read-only 948 STATUS current 949 DESCRIPTION 950 "This object provides the actual voltage of the battery 951 in units of millivolt (mV). 953 A value of 'ffffffff'H indicates that the actual voltage 954 cannot be determined." 955 ::= { batteryEntry 16 } 957 batteryActualCurrent OBJECT-TYPE 958 SYNTAX Integer32 959 UNITS "milliampere" 960 MAX-ACCESS read-only 961 STATUS current 962 DESCRIPTION 963 "This object provides the actual charging or discharging 964 current of the battery in units of milliampere (mA). 965 Charging current is represented by positive values, 966 discharging current is represented by negative values. 968 A value of '7fffffff'H indicates that the actual current 969 cannot be determined." 970 ::= { batteryEntry 17 } 972 batteryTemperature OBJECT-TYPE 973 SYNTAX Integer32 974 UNITS "deci-degrees Celsius" 975 MAX-ACCESS read-only 976 STATUS current 977 DESCRIPTION 978 "The ambient temperature at or within close proximity 979 of the battery. 981 A value of '7fffffff'H indicates that the temperature 982 cannot be determined." 983 ::= { batteryEntry 18 } 985 batteryAlarmLowCharge OBJECT-TYPE 986 SYNTAX Unsigned32 987 UNITS "milliampere hours" 988 MAX-ACCESS read-write 989 STATUS current 990 DESCRIPTION 991 "This object provides the lower threshold value for object 992 batteryActualCharge. If the value of object 993 batteryActualCharge falls below this threshold, 994 a low battery alarm will be raised. The alarm procedure may 995 include generating a batteryLowNotification. 997 This object should be set to a value such that when the 998 batteryLowNotification is generated, the battery is still 999 sufficiently charged to keep the device(s) that it powers 1000 operational for a time long enough to take actions before 1001 the powered device(s) enter a 'sleep' or 'off' state. 1003 A value of 0 indicates that no alarm will be raised for any 1004 value of object batteryActualCharge." 1005 ::= { batteryEntry 19 } 1007 batteryAlarmLowVoltage OBJECT-TYPE 1008 SYNTAX Unsigned32 1009 UNITS "millivolt" 1010 MAX-ACCESS read-write 1011 STATUS current 1012 DESCRIPTION 1013 "This object provides the lower threshold value for object 1014 batteryActualVoltage. If the value of object 1015 batteryActualVoltage falls below this threshold, 1016 a low battery alarm will be raised. The alarm procedure may 1017 include generating a batteryLowNotification. 1019 This object should be set to a value such that when the 1020 batteryLowNotification is generated, the battery is still 1021 sufficiently charged to keep the device(s) that it powers 1022 operational for a time long enough to take actions before 1023 the powered device(s) enter a 'sleep' or 'off' state. 1025 A value of 0 indicates that no alarm will be raised for any 1026 value of object batteryActualVoltage." 1027 ::= { batteryEntry 20 } 1029 batteryAlarmLowCapacity OBJECT-TYPE 1030 SYNTAX Unsigned32 1031 UNITS "milliampere hours" 1032 MAX-ACCESS read-write 1033 STATUS current 1034 DESCRIPTION 1035 "This object provides the lower threshold value for object 1036 batteryActualCapacity. If the value of object 1037 batteryActualCapacity falls below this threshold, 1038 a battery aging alarm will be raised. The alarm procedure 1039 may include generating a batteryAgingNotification. 1041 A value of 0 indicates that no alarm will be raised for any 1042 value of object batteryActualCapacity." 1043 ::= { batteryEntry 21 } 1045 batteryAlarmHighCycleCount OBJECT-TYPE 1046 SYNTAX Unsigned32 1047 MAX-ACCESS read-write 1048 STATUS current 1049 DESCRIPTION 1050 "This object provides the upper threshold value for object 1051 batteryChargingCycleCount. If the value of object 1052 batteryChargingCycleCount rises above this threshold, 1053 a battery aging alarm will be raised. The alarm procedure 1054 may include generating a batteryAgingNotification. 1056 A value of 0 indicates that no alarm will be raised for any 1057 value of object batteryChargingCycleCount." 1058 ::= { batteryEntry 22 } 1060 batteryAlarmHighTemperature OBJECT-TYPE 1061 SYNTAX Integer32 1062 UNITS "deci-degrees Celsius" 1063 MAX-ACCESS read-write 1064 STATUS current 1065 DESCRIPTION 1066 "This object provides the upper threshold value for object 1067 batteryTemperature. If the value of object 1068 batteryTemperature rises above this threshold, a battery 1069 high temperature alarm will be raised. The alarm procedure 1070 may include generating a batteryTemperatureNotification. 1072 A value of '7fffffff'H indicates that no alarm will be 1073 raised for any value of object batteryTemperature." 1074 ::= { batteryEntry 23 } 1076 batteryAlarmLowTemperature OBJECT-TYPE 1077 SYNTAX Integer32 1078 UNITS "deci-degrees Celsius" 1079 MAX-ACCESS read-write 1080 STATUS current 1081 DESCRIPTION 1082 "This object provides the lower threshold value for object 1083 batteryTemperature. If the value of object 1084 batteryTemperature falls below this threshold, a battery 1085 low temperature alarm will be raised. The alarm procedure 1086 may include generating a batteryTemperatureNotification. 1088 A value of '7fffffff'H indicates that no alarm will be 1089 raised for any value of object batteryTemperature." 1090 ::= { batteryEntry 24 } 1092 batteryCellIdentifier OBJECT-TYPE 1093 SYNTAX SnmpAdminString 1094 MAX-ACCESS read-only 1095 STATUS current 1096 DESCRIPTION 1097 "The value of this object identifies one or more cells of a 1098 battery. The format of the cell identifier may vary between 1099 different implementations. It should uniquely identify one 1100 or more cells of the indexed battery. 1102 This object can be used for batteries, such as, for example, 1103 lithium polymer batteries for which battery controllers 1104 monitor cells individually. 1106 This object is used by notifications of type 1107 batteryLowNotification, batteryTemperatureNotification, 1108 batteryCriticalNotification, and batteryAgingNotification. 1109 These notifications can use the value of this object to 1110 indicate the event that triggered the generation of the 1111 notification in more details by specifying a single cell 1112 or a set of cells within the battery which are specifically 1113 addressed by the notification. 1115 An example use case for this object is a single cell in a 1116 battery that exceeds the temperature indicated by object 1117 batteryAlarmHighTemperature. In such a case, a 1118 batteryTemperatureNotification can be generated that not 1119 just indicates the battery for which the temperature is 1120 exceeded but also the particular cell. 1122 The initial value of this object is the empty string. The 1123 value of this object is set at each time a 1124 batteryLowNotification, a batteryTemperatureNotification, 1125 a batteryCriticalNotification, or a batteryAgingNotification 1126 is generated. 1128 When a notification is generated that does not indicate a 1129 specific cell or set of cells, the value of this object is 1130 set to the empty string." 1131 ::= { batteryEntry 25 } 1133 --================================================================== 1134 -- 2. Notifications 1135 --================================================================== 1137 batteryChargingStateNotification NOTIFICATION-TYPE 1138 OBJECTS { 1139 batteryChargingOperState 1140 } 1141 STATUS current 1142 DESCRIPTION 1143 "This notification can be generated when a charging state 1144 of the battery (indicated by the value of object 1145 batteryChargingOperState) is triggered by an event other 1146 than a write action to object batteryChargingAdminState. 1147 Such an event may, for example, be triggered by a local 1148 battery controller." 1149 ::= { batteryNotifications 1 } 1151 batteryLowNotification NOTIFICATION-TYPE 1152 OBJECTS { 1153 batteryActualCharge, 1154 batteryActualVoltage, 1155 batteryCellIdentifier 1156 } 1157 STATUS current 1158 DESCRIPTION 1159 "This notification can be generated when the current charge 1160 (batteryActualCharge) or the current voltage 1161 (batteryActualVoltage) of the battery falls below a 1162 threshold defined by object batteryAlarmLowCharge or object 1163 batteryAlarmLowVoltage, respectively. 1165 Note that typically, this notification is generated in a 1166 state where the battery is still sufficiently charged to keep 1167 the device(s) that it powers operational for some time. 1168 If the charging state of the battery has become critical, 1169 i.e., the device(s) powered by the battery must go to a 1170 'sleep' or 'off' state, then the batteryCriticalNotification 1171 should be used instead. 1173 If the low charge or voltage has been detected for a single 1174 cell or a set of cells of the battery and not for the entire 1175 battery, then object batteryCellIdentifier should be set to 1176 a value that identifies the cell or set of cells. 1177 Otherwise, the value of object batteryCellIdentifier should 1178 be set to the empty string when this notification is 1179 generated. 1181 The notification should not be sent again for the same 1182 battery or cell before either (a) the current voltage or 1183 the current charge, respectively, has become higher than the 1184 corresponding threshold through charging or (b) an indication 1185 of a maintenance action has been detected, such as battery 1186 disconnection event, or a reinitialization of the battery 1187 monitoring system. 1189 This notification should not be sent when the battery is in 1190 a charging mode, i.e., the value of object 1191 batteryChargingOperState is charging(2) or fastCharging(3)." 1192 ::= { batteryNotifications 2 } 1194 batteryCriticalNotification NOTIFICATION-TYPE 1195 OBJECTS { 1196 batteryActualCharge, 1197 batteryActualVoltage, 1198 batteryCellIdentifier 1199 } 1200 STATUS current 1201 DESCRIPTION 1202 "This notification can be generated when the current charge 1203 of the battery falls so low that it cannot provide a 1204 sufficient power supply function for regular operation 1205 of the powered device(s). The battery needs to be charged 1206 before it can be used for regular power supply again. The 1207 battery may still provide sufficient power for a 'sleep' 1208 mode of powered device(s) or for a transition into an 'off' 1209 mode. 1211 If the critical state is caused a single cell or a set of 1212 cells of the battery, then object batteryCellIdentifier 1213 should be set to a value that identifies the cell or set of 1214 cells. Otherwise, the value of object batteryCellIdentifier 1215 should be set to the empty string when this notification is 1216 generated. 1218 The notification should not be sent again for the same 1219 battery before either the battery charge has increased 1220 through charging to a non-critical value or an indication 1221 of a maintenance action has been detected, such a battery 1222 disconnection event, or a reinitialization of the battery 1223 monitoring system. 1225 This notification should not be sent when the battery is in 1226 a charging mode, i.e., the value of object 1227 batteryChargingOperState is charging(2) or fastCharging(3)." 1228 ::= { batteryNotifications 3 } 1230 batteryTemperatureNotification NOTIFICATION-TYPE 1231 OBJECTS { 1232 batteryTemperature, 1233 batteryCellIdentifier 1234 } 1235 STATUS current 1236 DESCRIPTION 1237 "This notification can be generated when the measured 1238 temperature (batteryTemperature) rises above the threshold 1239 defined by object batteryAlarmHighTemperature or falls 1240 below the threshold defined by object 1241 batteryAlarmLowTemperature. 1243 If the low or high temperature has been detected for a 1244 single cell or a set of cells of the battery and not for the 1245 entire battery, then object batteryCellIdentifier should be 1246 set to a value that identifies the cell or set of cells. 1247 Otherwise, the value of object batteryCellIdentifier should 1248 be set to the empty string when this notification is 1249 generated. 1251 It may occur that the temperature alternates between values 1252 slightly below and slightly above a threshold. For limiting 1253 the notification rate in such a case, this notification 1254 should not be sent again for the same battery or cell, 1255 respectively, with in a time interval of 10 minutes. 1257 An exception to the rate limitations occurs immediately 1258 after the reinitialization of the battery monitoring system. 1259 If at this point in time the battery temperature is above 1260 the threshold defined by object batteryAlarmHighTemperature 1261 or below the threshold defined by object 1262 batteryAlarmLowTemperature, respectively, then this 1263 notification should be sent, independent of the time at 1264 which previous notifications for the same battery or cell, 1265 respectively, had been sent." 1266 ::= { batteryNotifications 4 } 1268 batteryAgingNotification NOTIFICATION-TYPE 1269 OBJECTS { 1270 batteryActualCapacity, 1271 batteryChargingCycleCount, 1272 batteryCellIdentifier 1273 } 1274 STATUS current 1275 DESCRIPTION 1276 "This notification can be generated when the actual 1277 capacity (batteryActualCapacity) falls below a threshold 1278 defined by object batteryAlarmLowCapacity 1279 or when the charging cycle count of the battery 1280 (batteryChargingCycleCount) exceeds the threshold defined 1281 by object batteryAlarmHighCycleCount. 1283 If the aging has been detected for a single cell or a set of 1284 cells of the battery and not for the entire battery, then 1285 object batteryCellIdentifier should be set to a value that 1286 identifies the cell or set of cells. Otherwise, the value 1287 of object batteryCellIdentifier should be set to the empty 1288 string when this notification is generated. 1290 This notification should not be sent again for the same 1291 battery or cell, respectively, before an indication of a 1292 maintenance action has been detected, such as a battery 1293 disconnection event, or a reinitialization of the battery 1294 monitoring system." 1295 ::= { batteryNotifications 5 } 1297 batteryConnectedNotification NOTIFICATION-TYPE 1298 OBJECTS { 1299 batteryIdentifier 1300 } 1301 STATUS current 1302 DESCRIPTION 1303 "This notification can be generated when it has been 1304 detected that a battery has been connected. The battery 1305 can be identified by the value of object batteryIdentifier 1306 as well as by the value of index entPhysicalIndex that is 1307 contained in the OID of object batteryIdentifier." 1308 ::= { batteryNotifications 6 } 1310 batteryDisconnectedNotification NOTIFICATION-TYPE 1311 STATUS current 1312 DESCRIPTION 1313 "This notification can be generated when it has been 1314 detected that one or more batteries have been disconnected." 1315 ::= { batteryNotifications 7 } 1317 --================================================================== 1318 -- 3. Conformance Information 1319 --================================================================== 1321 batteryCompliances OBJECT IDENTIFIER ::= { batteryConformance 1 } 1322 batteryGroups OBJECT IDENTIFIER ::= { batteryConformance 2 } 1324 -------------------------------------------------------------------- 1325 -- 3.1. Compliance Statements 1326 -------------------------------------------------------------------- 1328 batteryCompliance MODULE-COMPLIANCE 1329 STATUS current 1330 DESCRIPTION 1331 "The compliance statement for implementations of the 1332 BATTERY-MIB module. 1334 A compliant implementation MUST implement the objects 1335 defined in the mandatory groups batteryDescriptionGroup 1336 and batteryStatusGroup. 1338 Note that compliance with this compliance 1339 statement requires compliance with the 1340 entity4CRCompliance MODULE-COMPLIANCE statement of the 1341 ENTITY-MIB (RFC6933)." 1342 MODULE -- this module 1343 MANDATORY-GROUPS { 1344 batteryDescriptionGroup, 1345 batteryStatusGroup 1346 } 1348 GROUP batteryAlarmThresholdsGroup 1349 DESCRIPTION 1350 "A compliant implementation does not have to implement 1351 the batteryAlarmThresholdsGroup." 1353 GROUP batteryNotificationsGroup 1354 DESCRIPTION 1355 "A compliant implementation does not have to implement 1356 the batteryNotificationsGroup." 1358 GROUP batteryPerCellNotificationsGroup 1359 DESCRIPTION 1360 "A compliant implementation does not have to implement 1361 the batteryPerCellNotificationsGroup." 1363 GROUP batteryAdminGroup 1364 DESCRIPTION 1365 "A compliant implementation does not have to implement 1366 the batteryAdminGroup." 1368 OBJECT batteryAlarmLowCharge 1369 MIN-ACCESS read-only 1370 DESCRIPTION 1371 "A compliant implementation is not required 1372 to support set operations to this object." 1374 OBJECT batteryAlarmLowVoltage 1375 MIN-ACCESS read-only 1376 DESCRIPTION 1377 "A compliant implementation is not required 1378 to support set operations to this object." 1380 OBJECT batteryAlarmLowCapacity 1381 MIN-ACCESS read-only 1382 DESCRIPTION 1383 "A compliant implementation is not required 1384 to support set operations to this object." 1386 OBJECT batteryAlarmHighCycleCount 1387 MIN-ACCESS read-only 1388 DESCRIPTION 1389 "A compliant implementation is not required 1390 to support set operations to this object." 1392 OBJECT batteryAlarmHighTemperature 1393 MIN-ACCESS read-only 1394 DESCRIPTION 1395 "A compliant implementation is not required 1396 to support set operations to this object." 1398 OBJECT batteryAlarmLowTemperature 1399 MIN-ACCESS read-only 1400 DESCRIPTION 1401 "A compliant implementation is not required 1402 to support set operations to this object." 1404 ::= { batteryCompliances 1 } 1406 -------------------------------------------------------------------- 1407 -- 3.2. MIB Grouping 1408 -------------------------------------------------------------------- 1410 batteryDescriptionGroup OBJECT-GROUP 1411 OBJECTS { 1412 batteryIdentifier, 1413 batteryFirmwareVersion, 1414 batteryType, 1415 batteryTechnology, 1416 batteryDesignVoltage, 1417 batteryNumberOfCells, 1418 batteryDesignCapacity, 1419 batteryMaxChargingCurrent, 1420 batteryTrickleChargingCurrent 1421 } 1422 STATUS current 1423 DESCRIPTION 1424 "A compliant implementation MUST implement the objects 1425 contained in this group." 1426 ::= { batteryGroups 1 } 1428 batteryStatusGroup OBJECT-GROUP 1429 OBJECTS { 1430 batteryActualCapacity, 1431 batteryChargingCycleCount, 1432 batteryLastChargingCycleTime, 1433 batteryChargingOperState, 1434 batteryActualCharge, 1435 batteryActualVoltage, 1436 batteryActualCurrent, 1437 batteryTemperature 1438 } 1439 STATUS current 1440 DESCRIPTION 1441 "A compliant implementation MUST implement the objects 1442 contained in this group." 1443 ::= { batteryGroups 2 } 1445 batteryAdminGroup OBJECT-GROUP 1446 OBJECTS { 1447 batteryChargingAdminState 1448 } 1449 STATUS current 1450 DESCRIPTION 1451 "A compliant implementation does not have to implement the 1452 object contained in this group." 1453 ::= { batteryGroups 3 } 1455 batteryAlarmThresholdsGroup OBJECT-GROUP 1456 OBJECTS { 1457 batteryAlarmLowCharge, 1458 batteryAlarmLowVoltage, 1459 batteryAlarmLowCapacity, 1460 batteryAlarmHighCycleCount, 1461 batteryAlarmHighTemperature, 1462 batteryAlarmLowTemperature 1463 } 1464 STATUS current 1465 DESCRIPTION 1466 "A compliant implementation does not have to implement the 1467 objects contained in this group." 1468 ::= { batteryGroups 4 } 1470 batteryNotificationsGroup NOTIFICATION-GROUP 1471 NOTIFICATIONS { 1472 batteryChargingStateNotification, 1473 batteryLowNotification, 1474 batteryCriticalNotification, 1475 batteryAgingNotification, 1476 batteryTemperatureNotification, 1477 batteryConnectedNotification, 1478 batteryDisconnectedNotification 1479 } 1480 STATUS current 1481 DESCRIPTION 1482 "A compliant implementation does not have to implement the 1483 notifications contained in this group." 1484 ::= { batteryGroups 5 } 1486 batteryPerCellNotificationsGroup OBJECT-GROUP 1487 OBJECTS { 1488 batteryCellIdentifier 1489 } 1490 STATUS current 1491 DESCRIPTION 1492 "A compliant implementation does not have to implement the 1493 object contained in this group." 1494 ::= { batteryGroups 6 } 1495 END 1497 5. Security Considerations 1499 There are a number of management objects defined in this MIB module 1500 with a MAX-ACCESS clause of read-write. Such objects may be 1501 considered sensitive or vulnerable in some network environments. The 1502 support for SET operations in a non-secure environment without proper 1503 protection opens devices to attack. These are the tables and objects 1504 and their sensitivity/vulnerability: 1506 o batteryChargingAdminState 1507 Setting the battery charging state can be beneficial for an 1508 operator for various reasons such as charging batteries when the 1509 price of electricity is low. However, setting the charging state 1510 can be used by an attacker to discharge batteries of devices and 1511 thereby switching these devices off if they are powered solely by 1512 batteries. In particular, if the batteryAlarmLowCharge and 1513 batteryAlarmLowVoltage can also be set, this attack will go 1514 unnoticed (i.e. no notifications are sent). 1516 o batteryAlarmLowCharge and batteryAlarmLowVoltage 1517 These objects set the threshold for an alarm to be raised when the 1518 battery charge or voltage falls below the corresponding one of 1519 them. An attacker setting one of these alarm values can switch 1520 off the alarm by setting it to the 'off' value 0 or modify the 1521 alarm behavior by setting it to any other value. The result may 1522 be loss of data if the battery runs empty without warning to a 1523 recipient expecting such a notification. 1525 o batteryAlarmLowCapacity and batteryAlarmHighCycleCount 1526 These objects set the threshold for an alarm to be raised when the 1527 battery becomes older and less performant than required for stable 1528 operation. An attacker setting this alarm value can switch off 1529 the alarm by setting it to the 'off' value 0 or modify the alarm 1530 behavior by setting it to any other value. This may either lead 1531 to a costly replacement of a working battery or too old or too 1532 weak batteries being used. The consequence of the latter could 1533 e.g. be that a battery cannot provide power long enough between 1534 two scheduled charging actions causing the powered device to shut 1535 down and potentially lose data. 1537 o batteryAlarmHighTemperature and batteryAlarmLowTemperature 1538 These objects set thresholds for an alarm to be raised when the 1539 battery rises above/falls below them. An attacker setting one of 1540 these alarm values can switch off these alarms by setting them to 1541 the 'off' value '7fffffff'H or modify the alarm behavior by 1542 setting them to any other value. The result may e.g. be an 1543 unnecessary shutdown of a device if batteryAlarmHighTemperature is 1544 set to too low or damage to the device by too high temperatures if 1545 switched off or set to too high values or by damage to the battery 1546 when it e.g. is being charged. Batteries can also be damaged e.g. 1547 in an attempt to charge them at too low temperatures. 1549 Some of the readable objects in this MIB module (i.e., objects with a 1550 MAX-ACCESS other than not-accessible) may be considered sensitive or 1551 vulnerable in some network environments. It is thus important to 1552 control even GET and/or NOTIFY access to these objects and possibly 1553 to even encrypt the values of these objects when sending them over 1554 the network via SNMP. These are the tables and objects and their 1555 sensitivity/vulnerability: 1557 All potentially sensible or vulnerable objects of this MIB module are 1558 in the batteryTable. In general, there are no serious operational 1559 vulnerabilities foreseen in case of an unauthorized read access to 1560 this table. However, corporate confidentiality issues need to be 1561 considered. It may be a trade secret of the operator 1562 o how many batteries are installed in a managed node (batteryIndex) 1563 o how old these batteries are (batteryActualCapacity and 1564 batteryChargingCycleCount) 1565 o when the next replacement cycle for batteries can be expected 1566 (batteryAlarmLowCapacity and batteryAlarmHighCycleCount) 1567 o what battery type and make are used with which firmware version 1568 (batteryIdentifier, batteryFirmwareVersion, batteryType, and 1569 batteryTechnology) 1571 For any battery-powered device whose use can be correlated to an 1572 individual or a small group of individuals, the following objects 1573 have the potential to reveal information about those individuals' 1574 activities or habits (e.g., if they are near a power outlet, if they 1575 have been using their devices heavily, etc.): 1576 o batteryChargingCycleCount 1577 o batteryLastChargingCycleTime 1578 o batteryChargingOperState 1579 o batteryActualCharge 1580 o batteryActualVoltage 1581 o batteryActualCurrent 1582 o batteryTemperature 1583 o batteryAlarmLowCharge 1584 o batteryAlarmLowVoltage 1585 o batteryAlarmLowCapacity 1586 o batteryAlarmHighCycleCount 1587 o batteryAlarmHighTemperature 1588 o batteryAlarmLowTemperature 1590 Implementers of this specification should use appropriate privacy 1591 protections as discussed in Section 9 of the Requirements for Energy 1592 Management [RFC6988]. Battery monitoring of devices used by 1593 individuals or in homes should only occur with proper authorization. 1595 SNMP versions prior to SNMPv3 did not include adequate security. 1596 Even if the network itself is secure (for example by using IPsec), 1597 there is no control as to who on the secure network is allowed to 1598 access and GET/SET (read/change/create/delete) the objects in this 1599 MIB module. 1601 Implementations SHOULD provide the security features described by the 1602 SNMPv3 framework (see [RFC3410]), and implementations claiming 1603 compliance to the SNMPv3 standard MUST include full support for 1604 authentication and privacy via the User-based Security Model (USM) 1606 [RFC3414] with the AES cipher algorithm [RFC3826]]. Implementations 1607 MAY also provide support for the Transport Security Model (TSM) 1608 [RFC5591] in combination with a secure transport such as SSH 1609 [RFC5592] or TLS/DTLS [RFC6353]. 1611 Further, deployment of SNMP versions prior to SNMPv3 is NOT 1612 RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to 1613 enable cryptographic security. It is then a customer/operator 1614 responsibility to ensure that the SNMP entity giving access to an 1615 instance of this MIB module is properly configured to give access to 1616 the objects only to those principals (users) that have legitimate 1617 rights to indeed GET or SET (change/create/delete) them. 1619 6. IANA Considerations 1621 6.1. SMI Object Identifier Registration 1623 The Battery MIB module defined in this document uses the following 1624 IANA-assigned OBJECT IDENTIFIER value recorded in the SMI Numbers 1625 registry: 1627 Descriptor OBJECT IDENTIFIER value 1628 ---------- ----------------------- 1629 batteryMIB { mib-2 xxx } 1631 [NOTE for IANA: Please allocate an object identifier at 1632 http://www.iana.org/assignments/smi-numbers for object batteryMIB.] 1634 6.2. Battery Technology Registration 1636 Object batteryTechnology defined in Section 4 reports battery 1637 technologies. Eighteen values for battery technologies have 1638 initially been defined. They are listed in a table in Section 3.2. 1640 For ensuring extensibility of this list, IANA has created a registry 1641 for battery technologies at 1642 http://www.iana.org/assignments/battery-technologies and filled it 1643 with the initial list given in Section 3.2. 1645 New assignments of numbers for battery technologies will be 1646 administered by IANA through Expert Review ([RFC5226]). Experts must 1647 check for sufficient relevance of a battery technology to be added 1648 according to the guidelines in section Section 3.2.1. 1650 [NOTE for IANA: Please create a new registry under 1651 http://www.iana.org/assignments/battery-technologies for battery 1652 types. Please fill the registry with values from the table in 1653 Section 3.2] 1655 7. Acknowledgements 1657 We would like to thank Steven Chew, Bill Mielke, and Alan Luchuk for 1658 their valuable input. 1660 8. References 1662 8.1. Normative References 1664 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1665 Requirement Levels", BCP 14, RFC 2119, March 1997. 1667 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 1668 IANA Considerations Section in RFCs", BCP 26, RFC 5226, 1669 May 2008. 1671 [RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. 1672 Schoenwaelder, Ed., "Structure of Management Information 1673 Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. 1675 [RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. 1676 Schoenwaelder, Ed., "Textual Conventions for SMIv2", 1677 STD 58, RFC 2579, April 1999. 1679 [RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, 1680 "Conformance Statements for SMIv2", STD 58, RFC 2580, 1681 April 1999. 1683 [RFC3411] Harrington, D., Presuhn, R., and B. Wijnen, "An 1684 Architecture for Describing Simple Network Management 1685 Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, 1686 December 2002. 1688 [RFC3414] Blumenthal, U. and B. Wijnen, "User-based Security Model 1689 (USM) for version 3 of the Simple Network Management 1690 Protocol (SNMPv3)", STD 62, RFC 3414, December 2002. 1692 [RFC3826] Blumenthal, U., Maino, F., and K. McCloghrie, "The 1693 Advanced Encryption Standard (AES) Cipher Algorithm in the 1694 SNMP User-based Security Model", RFC 3826, June 2004. 1696 [RFC5591] Harrington, D. and W. Hardaker, "Transport Security Model 1697 for the Simple Network Management Protocol (SNMP)", 1698 STD 78, RFC 5591, June 2009. 1700 [RFC5592] Harrington, D., Salowey, J., and W. Hardaker, "Secure 1701 Shell Transport Model for the Simple Network Management 1702 Protocol (SNMP)", RFC 5592, June 2009. 1704 [RFC6353] Hardaker, W., "Transport Layer Security (TLS) Transport 1705 Model for the Simple Network Management Protocol (SNMP)", 1706 STD 78, RFC 6353, July 2011. 1708 [RFC6933] Bierman, A., Romascanu, D., Quittek, J., and M. 1709 Chandramouli, "Entity MIB (Version 4)", RFC 6933, 1710 May 2013. 1712 8.2. Informative References 1714 [RFC6988] Quittek, J., Chandramouli, M., Winter, R., Dietz, T., and 1715 B. Claise, "Requirements for Energy Management", RFC 6988, 1716 September 2013. 1718 [RFC7326] Parello, J., Claise, B., Schoening, B., and J. Quittek, 1719 "Energy Management Framework", RFC 7326, September 2014. 1721 [RFC7460] Chandramouli, M., Claise, B., Schoening, B., Quittek, J., 1722 and T. Dietz, "Monitoring and Control MIB for Power and 1723 Energy", RFC 7460, March 2015. 1725 [RFC1628] Case, J., "UPS Management Information Base", RFC 1628, 1726 May 1994. 1728 [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, 1729 "Introduction and Applicability Statements for Internet- 1730 Standard Management Framework", RFC 3410, December 2002. 1732 [SBS] "Smart Battery Data Specification", Revision 1.1, 1733 December 1998. 1735 Authors' Addresses 1737 Juergen Quittek 1738 NEC Europe Ltd. 1739 NEC Laboratories Europe 1740 Network Research Division 1741 Kurfuersten-Anlage 36 1742 Heidelberg 69115 1743 DE 1745 Phone: +49 6221 4342-115 1746 Email: quittek@neclab.eu 1748 Rolf Winter 1749 NEC Europe Ltd. 1750 NEC Laboratories Europe 1751 Network Research Division 1752 Kurfuersten-Anlage 36 1753 Heidelberg 69115 1754 DE 1756 Phone: +49 6221 4342-121 1757 Email: Rolf.Winter@neclab.eu 1759 Thomas Dietz 1760 NEC Europe Ltd. 1761 NEC Laboratories Europe 1762 Network Research Division 1763 Kurfuersten-Anlage 36 1764 Heidelberg 69115 1765 DE 1767 Phone: +49 6221 4342-128 1768 Email: Thomas.Dietz@neclab.eu