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.