ISO/IEC IEC 29341-6-16 — UPnP Low Power — Part 6-16: Device Info Service

Power-Aware Device Identification and Capability Discovery in UPnP Networks

The ISO/IEC 29341-6-16 standard defines the Device Info Service for UPnP Low Power networks. This service provides standardized metadata about a device’s power-related identity and capabilities, including battery information, power-source type, manufacturer details, and device category. It serves as the foundational discovery service that other Low Power services build upon.

The Device Info Service should be the first Low Power service implemented on any new device. Its state variables provide the context needed by control points to correctly interpret data from the Power Save, Energy Monitoring, Power Alert, and Power Control services.

Device Metadata and Power Source Classification

The service exposes a comprehensive set of state variables that describe the device’s identity and power subsystem. These variables are typically static (set during manufacturing or installation) but may include dynamic fields such as battery charge level.

State Variable Type Description
DeviceCategory string Device classification: “sensor”, “actuator”, “controller”, “appliance”, “lighting”, “HVAC”, “metering”
PowerSourceType string Primary power source: “battery”, “mains”, “PoE”, “energyHarvesting”, “solar”, “generator”
BatteryCapacity ui4 (mAh) Nominal battery capacity in milliamp-hours
BatteryChargeLevel ui1 (%) Current battery charge level, 0–100%
Manufacturer string Manufacturer name as registered in the UPnP device registry
ModelName string Model identifier string
FirmwareVersion string Current firmware version identifier
PowerProfile string (CSV) Comma-separated list of supported Low Power service profiles
By standardizing device category and power source metadata, the Device Info Service enables plug-and-play energy management. A control point can instantly distinguish between a battery-powered temperature sensor and a mains-powered HVAC actuator, applying different polling and alert policies to each.

Service Actions and Discovery Workflow

The Device Info Service provides query actions that facilitate automatic configuration:

  • GetDeviceInfo() — Returns the complete set of device identity metadata in a single response. This is the primary discovery action.
  • GetBatteryStatus() — Returns BatteryChargeLevel plus estimated remaining runtime. Devices without batteries return a charge level of 255 (not applicable).
  • GetPowerProfile() — Returns the list of Low Power services supported by this device. Control points use this to determine which services to query or subscribe to.

The typical discovery workflow proceeds as follows: after a device announces itself via UPnP SSDP, the control point invokes GetDeviceInfo() on the Device Info Service to classify the device and read its power profile. Based on the PowerProfile response, the control point then queries the relevant services — Energy Monitoring, Power Save, Power Alert, or Power Control — to obtain detailed status. This layered discovery model reduces network overhead by ensuring control points only fetch data from services the device actually supports.

A device must not change its PowerProfile after initial advertisement if doing so would invalidate the control point’s service subscriptions. If capabilities change (e.g., a firmware update adds Energy Monitoring), the device should reboot to trigger a fresh SSDP announcement.

Engineering Best Practices

Battery Reporting Accuracy. The BatteryChargeLevel variable should report state-of-charge using coulomb-counting where possible. Simple voltage-based estimation is inaccurate for lithium chemistries due to the flat discharge curve. A fuel-gauge IC (e.g., Texas Instruments BQ27421) provides ±1% accuracy versus ±15% for voltage-only methods.

Never report battery percentage based solely on terminal voltage for Li-ion or Li-Po batteries. The flat 3.6–3.7 V operating plateau means a voltage-only reading of 3.65 V could represent anywhere from 20% to 80% state of charge, leading to premature or delayed replacement alerts.

Firmware Versioning Strategy. Use semantic versioning (MAJOR.MINOR.PATCH) for the FirmwareVersion field. Increment MAJOR when the device’s PowerProfile changes, MINOR when state variable behavior is extended, and PATCH for bug fixes. This convention allows control points to make compatibility decisions without deep inspection of the device’s capabilities.

Frequently Asked Questions

Q: Is the Device Info Service mandatory for all UPnP Low Power devices?
A: Yes. The standard makes the Device Info Service a mandatory requirement for devices claiming Low Power compliance. It provides the context needed for all other Low Power services to function correctly.
Q: Can BatteryChargeLevel be used for mission-critical low-battery alerts?
A: Yes, but only if the device uses coulomb-counting or impedance-track-based fuel gauging. Simple voltage monitoring is insufficiently accurate for critical alerts.
Q: What happens if a device has multiple power sources (battery + mains)?
A: PowerSourceType should list both sources, comma-separated, with the primary source first. BatteryChargeLevel always reports the backup battery status. A device running on mains with a fully charged backup battery should report 100%.
Q: How often should a control point poll GetBatteryStatus()?
A: For most applications, once every 24 hours is sufficient. If low-battery alerts are critical, poll every hour or subscribe to PowerAlert events (6-15) for threshold-based notifications.

Leave a Reply

Your email address will not be published. Required fields are marked *