ISO/IEC IEC 29341-6-13 — UPnP Low Power — Part 6-13: Power Save Service

Architecture, State Variables, and Practical Implementation for Power-Aware UPnP Networks

The ISO/IEC 29341-6-13 standard defines the Power Save Service within the UPnP Low Power architecture. This service enables UPnP devices to advertise and manage power-save capabilities, allowing control points to coordinate sleeping schedules across a home or enterprise network. As the Internet of Things (IoT) expands, the ability for devices to enter and exit low-power states without breaking connectivity becomes a critical design requirement.

Implement the Power Save service as a standalone UPnP service on battery-powered sensors. Pair it with the Power Control service (6-17) to allow remote wake-up while keeping average current draw below 50 µA in sleep mode.

Service Architecture and State Variables

The Power Save Service exposes a set of state variables that describe the device’s power-save capabilities and current status. The two primary classes of variables are Capabilities and Status.

State Variable Type Description
PowerSaveCapabilities string (CSV list) Comma-separated list of supported sleep modes: “deepSleep”, “lightSleep”, “standby”, “hibernate”
PowerSaveStatus string Current power mode: “awake”, “lightSleep”, “deepSleep”, “standby”, “hibernate”, “waking”
SleepDuration ui4 (seconds) Duration of the current or pending sleep period
WakeupTimeout ui4 (seconds) Maximum time the device needs to return to full operation
AutoSleepEnabled boolean Indicates whether autonomous sleep transitions are permitted
A well-designed Power Save Service can reduce overall network power consumption by 40–60% in a typical smart-home deployment by allowing the control point to coordinate sleep cycles across dozens of devices.

Actions and Control Semantics

The service defines several UPnP actions that a control point invokes to query or change power-save behavior:

  • GetPowerSaveCapabilities() — Returns the list of sleep modes the device supports. Invoke during initial discovery to populate the device profile.
  • GetPowerSaveStatus() — Returns the current power state. Poll this periodically (every 30–60 s) to track device availability.
  • SetSleepDuration(NewSleepDuration) — Requests a specific sleep interval. The device may negotiate the actual duration; the response confirms the accepted value.
  • EnableAutoSleep(NewAutoSleepEnable) — Enables or disables autonomous sleep transitions. When enabled, the device may enter sleep based on its own heuristics; when disabled, only explicit control-point commands trigger state changes.

The state-transition model guarantees that a device in any sleep mode will return to “awake” within the time advertised by WakeupTimeout. This guarantee is essential for real-time control applications such as lighting or HVAC.

Do not rely solely on GetPowerSaveStatus() for liveness detection. A device in “deepSleep” may not respond to control-point queries at all. Instead, subscribe to event notifications for state-change alerts and use a watchdog timer at the application layer.

Engineering Design Insights

When integrating the Power Save Service into a product, consider these practical guidelines:

Network-Layer Coordination. The UPnP Low Power architecture allows the control point to be the central scheduler, which simplifies device firmware. However, for resiliency, devices should implement a local timeout that forces wake-up even if the control point becomes unreachable. This prevents the network from collapsing into an unrecoverable sleep state.

Never combine aggressive sleep timers (<30 s) with AutoSleepEnabled=true on devices that serve as UPnP event subscribers. The control point will miss critical event notifications, leading to desynchronized state across the network.

Battery Life Trade-Off. A sensor reporting temperature every 5 minutes can achieve a 2-year battery life on a CR2032 coin cell if the Power Save Service is tuned correctly: wake → send measurement → sleep within 200 ms. The WakeupTimeout variable should reflect worst-case crystal startup time plus radio re-association delay.

Frequently Asked Questions

Q: Can a device support the Power Save Service without supporting the full Low Power architecture?
A: Yes. The standard allows individual services to be implemented independently. A device can offer Power Save without Energy Monitoring (6-14) or Power Alert (6-15), though combining them provides richer energy management.
Q: How does the Power Save Service interact with DHCP lease renewal?
A: When a device wakes from deepSleep, it should renew its DHCP lease immediately. Design the sleep duration to not exceed 50% of the DHCP lease time to avoid IP address conflicts.
Q: What is the recommended polling interval for GetPowerSaveStatus()?
A: For battery-powered devices, poll no more frequently than once per 60 seconds. For mains-powered devices, 10–30 seconds is acceptable.
Q: Is there a mandatory minimum set of state variables?
A: All state variables listed in the standard are optional, but at minimum a service implementation should expose PowerSaveStatus and WakeupTimeout for basic interoperability.

Leave a Reply

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