%%{init: {'theme': 'base', 'themeVariables': {'primaryColor':'#2C3E50','primaryTextColor':'#fff','primaryBorderColor':'#16A085','lineColor':'#16A085','secondaryColor':'#E67E22','tertiaryColor':'#ecf0f1','textColor':'#2C3E50','fontSize':'14px'}}}%%
graph TB
subgraph "Standard Idle Mode"
IDLE1["Power: 15 mA continuously"]
IDLE2["Reachable: Always"]
IDLE3["Battery Life: 14 days"]
IDLE4["Use: Real-time messaging"]
end
subgraph "eDRX (Extended Discontinuous Reception)"
EDRX1["Power: 1.5 mA sleep<br/>15 mA during wake"]
EDRX2["Wake Cycle: 5.12s - 163 min"]
EDRX3["Battery Life: 1-2 years"]
EDRX4["Use: Hourly sensor updates"]
end
subgraph "PSM (Power Save Mode)"
PSM1["Power: 10 µA deep sleep"]
PSM2["TAU Timer: Hours to days"]
PSM3["Battery Life: 10+ years"]
PSM4["Use: Daily meter readings"]
PSM5["Reachable: Active window only"]
end
style IDLE1 fill:#E67E22,stroke:#2C3E50,color:#fff
style IDLE2 fill:#E67E22,stroke:#2C3E50,color:#fff
style IDLE3 fill:#E67E22,stroke:#2C3E50,color:#fff
style IDLE4 fill:#E67E22,stroke:#2C3E50,color:#fff
style EDRX1 fill:#16A085,stroke:#2C3E50,color:#fff
style EDRX2 fill:#16A085,stroke:#2C3E50,color:#fff
style EDRX3 fill:#16A085,stroke:#2C3E50,color:#fff
style EDRX4 fill:#16A085,stroke:#2C3E50,color:#fff
style PSM1 fill:#2C3E50,stroke:#16A085,color:#fff
style PSM2 fill:#2C3E50,stroke:#16A085,color:#fff
style PSM3 fill:#2C3E50,stroke:#16A085,color:#fff
style PSM4 fill:#2C3E50,stroke:#16A085,color:#fff
style PSM5 fill:#2C3E50,stroke:#16A085,color:#fff
1159 Cellular IoT Power and Cost Optimization
Cellular IoT devices often run on batteries for years without replacement. This chapter teaches you:
- Power Saving Modes: How PSM and eDRX reduce power consumption by 1,500x
- Battery Life Calculations: How to estimate if your battery will last 10+ years
- Cost Planning: How to choose data plans that minimize total cost over 5-10 year deployments
These skills are essential for designing practical, cost-effective IoT solutions.
1159.1 Learning Objectives
By the end of this chapter, you will be able to:
- Configure Power Modes: Implement PSM and eDRX to achieve 10+ year battery life
- Calculate Battery Life: Model power consumption across different operating modes
- Estimate Costs: Calculate monthly subscription and data costs for cellular IoT deployments
- Optimize TCO: Select cost-effective data plans based on usage patterns
- Use AT Commands: Configure power saving modes through standard AT command interface
1159.2 Prerequisites
Required Chapters:
- Cellular IoT Technology Selection - Technology comparison
- Cellular IoT Fundamentals - Core concepts
Technical Background:
- Basic understanding of NB-IoT and LTE-M
- Familiarity with battery capacity (mAh)
- Understanding of data transmission concepts
Estimated Time: 35 minutes
1159.3 Key Concepts
- Power Saving Mode (PSM): Deep sleep mode with periodic wakeup for ultra-low power
- eDRX (Extended DRX): Extended discontinuous reception for longer sleep cycles
- TAU Timer: Tracking Area Update timer - how long device sleeps in PSM
- Active Window: Brief period after transmission when device is reachable
- AT Commands: Standard interface for controlling cellular modules
- APN: Access Point Name for connecting to carrier’s packet data network
- TCO: Total Cost of Ownership over deployment lifetime
1159.4 Power Saving Modes for Cellular IoT
Understanding power modes is critical for achieving 10+ year battery life:
Power Mode Comparison:
| Mode | Power Consumption | Reachability | Battery Life | Use Case |
|---|---|---|---|---|
| Standard Idle | 15 mA continuously | Always | 14 days (5000 mAh) | Real-time messaging |
| eDRX | 1.5 mA (sleep), 15 mA (wake) | Every wake cycle | 1-2 years | Hourly sensor updates |
| PSM | 10 µA (deep sleep) | Only during active window | 10+ years | Daily smart meter readings |
eDRX (Extended Discontinuous Reception) Details:
| Parameter | Value |
|---|---|
| Wake Cycle | Every 5.12s - 163 min (configurable) |
| Sleep Current | 1.5 mA (light sleep) |
| Active Current | 15 mA (listening for pages) |
| AT Command | AT+CEDRXS=1,4,'0101' |
PSM (Power Save Mode) Details:
| Parameter | Value |
|---|---|
| TAU Timer | Hours to days (configurable) |
| Deep Sleep Current | 10 µA (ultra-low power) |
| Active Window | 6-60 seconds after TX |
| AT Command | AT+CPSMS=1,,,'00100100','00000011' |
Timeline Examples:
| Mode | Pattern |
|---|---|
| eDRX (1 hour update) | Wake 5s -> Sleep 81.92s -> Wake 5s -> Sleep… |
| PSM (Daily update) | TX + Active 10s -> Deep Sleep 24h -> Wake for TX -> Deep Sleep… |
Power Comparison:
- PSM (10 µA) = 1,500x less than Idle (15 mA)
- eDRX (1.5 mA) = 10x less than Idle (15 mA)
1159.5 PSM Configuration and Battery Life Calculation
1159.5.1 Configuring PSM via AT Commands
The PSM AT command format:
AT+CPSMS=<mode>,<Requested_Periodic-RAU>,<Requested_GPRS-READY-timer>,<Requested_Periodic-TAU>,<Requested_Active-Time>
Binary encoding (8 bits): First 3 bits = unit, Last 5 bits = value
TAU (T3412) Units:
- 000 = 10 minutes
- 001 = 1 hour
- 010 = 10 hours
- 011 = 2 seconds
- 100 = 30 seconds
- 101 = 1 minute
Active Time (T3324) Units:
- 000 = 2 seconds
- 001 = 1 minute
- 010 = decihours
Example: 24-hour TAU, 30-second Active Time:
// TAU: 001 (1-hour units) + 00100 (4 decimal) = 4×6h = 24h → "00100100"
// Active: 000 (2-second units) + 01111 (15 decimal) = 15×2s = 30s → "00001111"
sendAT("AT+CPSMS=1,,,\"00100100\",\"00001111\"");1159.5.2 Battery Life Calculation Example
Scenario: Smart water meter with daily readings
# Device parameters
battery_capacity_mah = 5000 # 2× AA batteries
transmissions_per_day = 1
payload_bytes = 50
# Current consumption
tx_current_ma = 220 # NB-IoT transmit
rx_current_ma = 60 # Receive acknowledgment
idle_current_ma = 15 # Connection overhead
psm_current_ua = 10 # Deep sleep (0.01 mA)
# Timing (seconds)
tx_duration_s = 3
rx_duration_s = 1
connection_overhead_s = 5
active_window_s = 6
# Calculate daily energy consumption
# Active phases (in mAh)
tx_energy = (tx_duration_s / 3600) * tx_current_ma * transmissions_per_day
rx_energy = (rx_duration_s / 3600) * rx_current_ma * transmissions_per_day
overhead_energy = (connection_overhead_s / 3600) * idle_current_ma * transmissions_per_day
active_energy = (active_window_s / 3600) * idle_current_ma * transmissions_per_day
# PSM sleep (remaining ~24 hours)
psm_hours = 24 - (tx_duration_s + rx_duration_s + connection_overhead_s + active_window_s) / 3600
psm_energy = psm_hours * (psm_current_ua / 1000) # Convert µA to mA
# Total daily consumption
daily_consumption = tx_energy + rx_energy + overhead_energy + active_energy + psm_energy
# ≈ 0.183 + 0.017 + 0.021 + 0.025 + 0.240 = 0.486 mAh/day
# Battery life
battery_life_days = battery_capacity_mah / daily_consumption
battery_life_years = battery_life_days / 365
# ≈ 10,288 days = 28.2 yearsResult: With PSM, a 5000 mAh battery can last 28+ years (theoretical). Real-world factors (self-discharge, temperature, retransmissions) reduce this to 10-15 years.
- Always Enable PSM for Infrequent Updates: PSM (10 µA) vs Idle (15 mA) = 1,500x power reduction
- PSM Configuration: Set TAU (Tracking Area Update) >= transmission interval for maximum sleep
- eDRX for Moderate Frequencies: Use eDRX (1.5 mA) for 1-minute to 1-hour update intervals
- Optimize Transmission Time: Reduce payload size to minimize TX duration (220 mA for NB-IoT)
- Connection Caching: Maintain PDP context to avoid reconnection overhead (5-10 seconds)
- AT Commands for Monitoring:
- PSM:
AT+CPSMS=1,,,<TAU>,<Active> - eDRX:
AT+CEDRXS=1,4,<eDRX_value> - Check status:
AT+CPSMS?andAT+CEDRXS?
- PSM:
1159.6 Data Plan Cost Analysis
1159.6.1 Calculating Data Usage
Monthly data formula:
Monthly Data = Payload × (1 + Overhead%) × Transmissions/day × 30 days
Protocol overhead factors:
| Protocol Stack | Overhead |
|---|---|
| MQTT over TCP/IP | ~30% |
| CoAP over UDP | ~15% |
| MQTT-SN | ~10% |
Example calculation:
# Sensor parameters
payload_bytes = 100
protocol_overhead = 1.3 # MQTT over TCP/IP (30%)
transmissions_per_day = 48 # Every 30 minutes
# Monthly data
data_per_transmission = payload_bytes * protocol_overhead # 130 bytes
monthly_transmissions = transmissions_per_day * 30 # 1,440
monthly_data_bytes = data_per_transmission * monthly_transmissions # 187,200 bytes
monthly_data_mb = monthly_data_bytes / (1024 * 1024) # 0.178 MB1159.6.2 Provider Cost Comparison
Common IoT Connectivity Providers:
| Provider | Pricing Model | Best For |
|---|---|---|
| 1NCE | $10 flat for 10 years (500 MB) | Low-data, long-term deployments |
| Hologram | $0.60/month + $0.40/MB | Variable data usage, global roaming |
| Twilio | $2/month + $0.10/MB | Developer-friendly, API integration |
| Particle | $2.99/month (3 MB included) | Integrated device management |
1159.6.3 TCO Calculation Example
Scenario: 10,000 environmental sensors, 5-year deployment, 0.18 MB/month data usage
1NCE (Flat-rate):
Cost per device: $10 for 10 years
5-year pro-rated: $5/device
Fleet cost: $5 × 10,000 = $50,000
Monthly equivalent: $0.083/device
Hologram (Pay-as-you-go):
Monthly base: $0.60
Monthly data: 0.18 MB × $0.40/MB = $0.072
Monthly total: $0.672/device
5-year cost: $0.672 × 60 months = $40.32/device
Fleet cost: $40.32 × 10,000 = $403,200
Particle (Pooled with included data):
Monthly: $2.99 (data within 3 MB included)
5-year cost: $2.99 × 60 = $179.40/device
Fleet cost: $179.40 × 10,000 = $1,794,000
Comparison Summary:
| Provider | Monthly/Device | 5-Year/Device | Fleet 5-Year TCO |
|---|---|---|---|
| 1NCE | $0.08 | $5.00 | $50,000 |
| Hologram | $0.67 | $40.32 | $403,200 |
| Particle | $2.99 | $179.40 | $1,794,000 |
Key Insight: For low-data IoT at scale, 1NCE is 8-36x cheaper than pay-as-you-go alternatives.
- Right-size Data Plan: Calculate actual data usage (payload × overhead × frequency × 30 days)
- Flat-rate for Predictable Loads: 1NCE $10/10yr unbeatable for <500 MB (smart meters, env sensors)
- Pay-as-you-go for Variable Loads: Hologram/Soracom better if monthly data varies 10x
- Optimize Protocol Overhead:
- MQTT over TCP/IP: 30% overhead
- CoAP over UDP: 15% overhead
- MQTT-SN: 10% overhead
- Compression: gzip can reduce sensor data by 60-80%
- Batch Transmissions: Send 10 readings at once instead of 10x separate (reduces overhead)
- Monitor Usage: Most carriers offer APIs to track per-device data consumption
- Regional Considerations: Some carriers cheaper in specific regions (check roaming fees)
1159.7 Knowledge Check
1159.8 Summary
This chapter covered cellular IoT power and cost optimization:
- PSM (Power Save Mode): Reduces idle current from 15 mA to 10 µA (1,500x reduction), enabling 10+ year battery life with proper configuration
- eDRX: Intermediate power savings (1.5 mA) for applications requiring more frequent downlink reachability
- AT Command Configuration: Use
AT+CPSMS=1,,,<TAU>,<Active>with binary-encoded timer values - Battery Life Calculation: Factor TX/RX/overhead/sleep modes; PSM makes transmission energy dominant instead of idle listening
- Cost Optimization: Flat-rate providers (1NCE) offer 8-36x lower TCO than pay-as-you-go for low-data IoT at scale
- Protocol Overhead: Reduce overhead with CoAP (15%) instead of MQTT (30%); use compression and batch transmissions
1159.9 What’s Next
Continue with practical implementation and troubleshooting:
- Next Chapter: Cellular IoT Practical Knowledge - AT commands, troubleshooting, and hands-on exercises
- Application Protocols: MQTT - Learn the most widely-used IoT messaging protocol
- Alternative: CoAP - Lightweight protocol with lower overhead for constrained devices
Interactive Learning Resources:
- Simulations Hub - Network topology explorer for cellular architectures
- Videos Hub - Cellular IoT deployment tutorials and case studies
- Quizzes Hub - NB-IoT vs LTE-M comparison assessments
- Knowledge Gaps Hub - Common PSM/eDRX configuration mistakes