Sigfox works best for infrequent, tiny-payload applications (smart meters, asset tracking, leak detection) where 140 messages/day and 12-byte payloads suffice. This chapter provides suitability evaluation frameworks, message budget calculations, multi-year battery life estimates, and TCO comparisons with alternative LPWAN technologies.
47.1 Learning Objectives
By the end of this chapter, you will be able to:
Evaluate Sigfox Suitability: Match application requirements to Sigfox capabilities using constraint-based analysis
Calculate Message Budgets: Design firmware logic within 140 message/day constraints with alert reserves
Analyze Battery Life: Estimate multi-year battery performance from TX current, sleep current, and message frequency
Compare Costs: Calculate total cost of ownership across Sigfox, LoRaWAN, and NB-IoT alternatives
Diagnose Deployment Failures: Identify unsuitable use cases and design flaws before deployment
Key Concepts
Use Case Evaluation Framework: Systematic method to assess Sigfox suitability: check message frequency (< 140/day?), payload size (< 12 bytes?), latency tolerance (minutes acceptable?), and downlink needs (minimal?).
Suitable Use Cases: Asset tracking (daily check-ins), utility metering (hourly reads), environmental sensors (temperature, humidity), and industrial status monitoring.
Unsuitable Use Cases: Real-time tracking (exceeds message budget), video/audio (payload too large), command-and-control actuators (downlink limited), and high-frequency monitoring.
Payload Feasibility Analysis: Process of determining if all required sensor data fits within 12-byte constraint; common approach uses bit-field encoding and fixed-point representation.
TCO Comparison: Total cost of ownership analysis comparing Sigfox (device + subscription) against LoRaWAN (device + gateway + server) and NB-IoT (device + cellular plan).
Vertical Market Analysis: Industry-specific evaluation of Sigfox applicability in agriculture, logistics, utilities, smart cities, and industrial sectors.
Decision Matrix: Structured comparison tool scoring Sigfox against alternatives on technical fit, cost, coverage, ecosystem, and risk dimensions for a given use case.
For Beginners: Sigfox Use Cases
Sigfox excels at specific IoT use cases: tracking shipping containers across oceans, monitoring water meters in cities, detecting when a parking spot is occupied, and alerting when a freezer temperature rises. This analysis helps you identify when Sigfox is the ideal solution versus when another technology might be better.
Sensor Squad: Is Sigfox Right for Your Project?
“Choosing the right LPWAN is like choosing the right vehicle,” Sammy the Sensor explained. “Sigfox is a bicycle – simple, cheap, and efficient for short errands. LoRaWAN is a car – more capable, costs more upfront, but you own it. NB-IoT is a taxi – powerful and convenient, but you pay per ride. You would not take a bicycle on the highway, and you would not take a taxi to check the mailbox!”
“Let me give you the checklist,” Lila the LED offered. “Does your data fit in 12 bytes? Do you send fewer than 140 messages per day? Is Sigfox coverage available? Do you have fewer than 5,000 devices? Do you NOT need frequent commands sent to the device? If you answered yes to all five, Sigfox is probably your best bet – cheapest, simplest, longest battery life.”
Max the Microcontroller ran the numbers. “For a smart agriculture project with 1,000 soil sensors reporting every 4 hours, Sigfox is perfect. Payload: 10 bytes – fits! Messages: 6 per day – only 4.3% of quota. Range: 30-50 km rural – covers the whole farm. Battery life: 12.9 years. Cost: $6 per device per year. Every requirement is met with huge margins.”
“But know when to walk away,” Bella the Battery cautioned. “If you need more than 12 bytes, real-time alerts with under 5-second latency, frequent commands to your devices, or coverage in areas without Sigfox towers – those are dealbreakers. Do not try to force Sigfox into a use case it was not designed for. Choose the technology that matches your requirements, not just the cheapest one.”
Time: ~5 min | Difficulty: Intermediate | Unit: P09.C12.U02
Sigfox uplink and downlink message flow showing spatial diversity where device transmits 12-byte message received by 3 base stations simultaneously. Cloud performs deduplication, geolocation via triangulation, and selects best copy before delivering to customer application. Uplink limited to 140 messages/day at 100 bps taking 6 seconds. Optional downlink (4/day max) sends 8 bytes at 600 bps requiring device to listen 20-25 seconds consuming 17x more power than uplink.
Alternative View: Daily Message Budget
Sigfox daily message budget allocation
This chart shows a typical daily message budget allocation: with 140 uplinks/day, devices can send 24 hourly readings, 4 status updates, reserve 12 for alerts, and still have 100 messages as buffer.
Figure 47.1
Sigfox communication patterns comparison showing three modes. Uplink-only (green) sends 140 messages/day with no RX window achieving 10-20 year battery life for sensors and meters. Uplink + occasional downlink (orange) requests downlink flag and listens 20-25 seconds up to 4 times/day achieving 5-10 year battery for configuration updates. Bidirectional mode (orange/red) uses maximum capacity 140 uplink/4 downlink per day where downlinks cost 17x more power achieving 3-7 year battery for actuators and alerts.
Figure 47.2
Sigfox link budget breakdown showing components: TX power (+14 to +22 dBm), antenna gain (+0 to +3 dBi), and RX sensitivity (-126 to -142 dBm) combining for 154-167 dB total link budget. This enables urban coverage 3-10 km (140-150 dB path loss), suburban 10-30 km (150-160 dB), and rural 30-50 km (160-167 dB). LPWAN comparison shows Sigfox 154-167 dB similar to LoRaWAN 154-168 dB, with NB-IoT at 164 dB offering better indoor penetration through repetition.
Figure 47.3
47.4 Common Pitfalls
Pitfall: Treating 140 Messages/Day as Guaranteed Capacity
The Mistake: Designing applications that consume exactly 140 messages per day, leaving no buffer for alerts, retransmissions, or edge cases.
Why It Happens: Developers calculate message requirements mathematically without accounting for real-world variability:
Flawed calculation:
- 140 messages/day / 24 hours = 5.83 messages/hour
- "I'll send a reading every 10 minutes = 144 messages/day"
- "Close enough to 140, it should work!"
What actually happens:
- Day 1: 144 messages attempted, 4 rejected after hitting daily limit
- Missing readings: 4 PM, 4:10 PM, 4:20 PM, 4:30 PM (end of day)
- Critical alert at 4:15 PM -> CANNOT SEND (quota exhausted)
- System blind during most important monitoring period
The Fix: Design for 70-80% quota utilization, reserving capacity for exceptions:
Robust message budget (140 total):
- Scheduled readings: 100 messages (71% of quota)
-> Every 15 minutes = 96/day, leaving 44 spare
- Alert reserve: 20 messages (14% of quota)
-> For threshold violations, status changes
- Buffer: 20 messages (14% of quota)
-> For clock drift, edge cases, debugging
Practical implementation:
1. Track message count in firmware (reset at midnight UTC)
2. If count > 100: Switch to hourly readings (non-critical)
3. If count > 120: Only send critical alerts
4. If count > 135: Emergency-only mode
Pitfall: Assuming Downlinks Arrive Immediately After Request
The Mistake: Designing control logic that expects downlink responses within seconds, like HTTP request/response patterns.
Why It Happens: Developers familiar with REST APIs or WebSockets expect synchronous communication:
Incorrect mental model:
Device: "Send sensor data + request downlink"
Cloud: "Receive data -> process -> send command"
Device: "Receive command -> execute"
Expected latency: 1-2 seconds (like HTTP)
Sigfox reality:
Device: "Send uplink at T=0"
Device: "Stay in RX mode for 20-25 seconds"
Cloud: "Process -> queue downlink -> schedule transmission"
Base Station: "Transmit downlink at T=20 seconds"
Device: "Receive downlink at T=20-25 seconds"
Actual latency: 20-25 seconds minimum!
Worse case:
- Device sends uplink without downlink flag
- Cloud decides it needs to send command
- Must wait for NEXT uplink with downlink flag
- Latency: Hours or days depending on uplink frequency!
The Fix: Design for asynchronous, high-latency downlink communication: 1. Downlink flag strategy: Only set downlink flag when device specifically needs configuration (e.g., after reboot, daily config check) 2. Command queuing: Backend queues commands until device requests downlink 3. Polling interval: Include “check for commands” uplink once per day with downlink flag 4. Timeout design: Application must tolerate 24+ hour command latency 5. Use case validation: If you need sub-minute control latency, Sigfox is the wrong technology–use LoRaWAN Class C or NB-IoT instead 6. Downlink budget: Remember only 4 downlinks/day–schedule wisely (e.g., at midnight for next day’s configuration)
47.5 Smart Agriculture Case Study
Understanding Check: Selecting LPWAN for Smart Agriculture
Scenario: AgriTech startup wants to monitor soil conditions across 1,000 fields (average 5 hectares each, spread 40 km radius from town center).
Sensor Requirements:
Transmit every 4 hours (6 messages/day)
Payload: Soil moisture (2 bytes) + temperature (2 bytes) + battery (2 bytes) + field ID (2 bytes) + timestamp (2 bytes) = 10 bytes total
Battery life target: 10+ years (no solar, buried sensors)
Cost target: Under $10k/year operating costs
Evaluating Sigfox Fit:
Payload analysis: 10 bytes needed, Sigfox allows 12 bytes uplink. Fits perfectly with 2 bytes spare for future sensors.
Message frequency: 6 messages/day needed, Sigfox allows 140 messages/day. Using only 4.3% of daily quota (spare capacity: 134 messages for alerts).
Range: Fields span 40 km radius. Sigfox rural range: 30-50 km. Single base station covers entire deployment (pi x 40^2 = 5,027 km^2 coverage).
Putting Numbers to It
When calculating Sigfox coverage area, the effective range determines the circular coverage footprint:
\[
A_{\text{coverage}} = \pi r^2
\]
For a rural Sigfox base station with 40 km range: \[
A_{\text{coverage}} = \pi (40)^2 = 5{,}027 \text{ km}^2
\]
Real-world example: A farm spanning 200 km² (14 km × 14 km) requires just one base station at the center (14 km diagonal < 40 km radius). Compare with cellular IoT: 4G LTE-M rural range ~10 km would need 20+ towers to cover the same area, at $25k+ per tower vs. Sigfox’s $15k single installation.
Battery life calculation:
Sigfox TX: 40 mA x 6 sec = 0.067 mAh per message
Daily energy: 6 msg x 0.067 mAh = 0.4 mAh/day
Sleep: 1 uA x 24h = 0.024 mAh/day
Total: 0.424 mAh/day
With 2000 mAh battery: 2000 / 0.424 = 4,717 days = 12.9 years
Hardware: 1000 x $10 = $10,000
Subscription: 1000 x $6/year x 5 = $30,000
Total: $40,000
LoRaWAN Alternative:
Hardware: 1000 x $15 = $15,000
Gateways: 20 x $1,500 = $30,000 (rural coverage)
Network server: $300/month x 60 = $18,000
Gateway connectivity: 20 x $30/month x 60 = $36,000
Total: $99,000
Result: Sigfox saves $59,000 (60% less expensive) for this application profile.
47.7 Python Example Outputs
47.7.1 Message Capacity and Battery Life Calculator
Example Output:
### Scenario 1: Environmental Sensor (Hourly Reports) ###
================================================================================
Sigfox Deployment Analysis
================================================================================
Device Configuration:
Payload Size: 10 bytes
Messages per Day: 24
TX Current: 40 mA
Sleep Current: 1 uA
Battery: 2000 mAh
Constraint Validation:
Payload valid (10 <= 12 bytes)
Messages valid (24 <= 140/day)
Battery Life Analysis:
Estimated Life: 11.6 years
Daily Energy: 472.0 uAh
- TX Energy: 448.0 uAh (94.9%)
- Sleep Energy: 24.0 uAh (5.1%)
TX Time: 0.167% of time
Feasible (>1 year battery life)
Optimization:
For 10-year battery life: 27 messages/day maximum
Optimal interval: 53.3 minutes
================================================================================
47.7.2 Payload Optimization Example
Example Output:
================================================================================
Sigfox Payload Optimization Examples
================================================================================
### Example 1: Naive Approach (Wasteful) ###
Using float32 (4 bytes each) for all sensors:
Total: 3 sensors x 4 bytes = 12 bytes (100% utilization)
Can only fit 3 sensors!
### Example 2: Optimized Approach ###
Using scaled integers with appropriate precision:
Payload Analysis:
Readings: 5
Payload Size: 8 bytes
Max Size: 12 bytes
Utilization: 66.7%
Remaining: 4 bytes
Hex: 00e14186031701c2
Breakdown:
temp: 22.5 -> 2 bytes (int16, offset 0)
humidity: 65.0 -> 1 byte (uint8, offset 2)
pressure: 1013.25 -> 2 bytes (uint16, offset 3)
battery: 3.7 -> 1 byte (uint8, offset 5)
light: 450 -> 2 bytes (uint16, offset 6)
Fit 5 sensors in 8 bytes!
4 bytes remaining for flags or additional sensors
### Example 3: Adding Flags with Bitfield ###
Flags: motion_detected=True, door_open=False, tamper_alert=False,
low_battery=True, maintenance_needed=False
Packed: 0x09 (binary: 00001001)
Size: 1 byte (5 boolean values!)
Total: 5 sensors + 5 flags = 9 bytes
Still 3 bytes remaining!
================================================================================
47.8 Knowledge Check: Message Constraints
Question: Building Automation System
A building management system needs to monitor 200 temperature sensors. Each sensor should report every 10 minutes. Each message contains temperature (2 bytes), humidity (2 bytes), and battery status (1 byte) = 5 bytes total. Is Sigfox suitable?
Yes, the payload fits in 12 bytes
No, exceeds 140 messages per day limit per device
Yes, but only if message frequency is reduced
No, Sigfox doesn’t support building automation
Click to reveal answer
Answer: B) No, exceeds 140 messages per day limit per device
Message budget: ✓ 6 messages/day uses only 4.3% of capacity
Alert handling: ✓ Can handle 20 extra alerts/day without exceeding limit
Battery life: ✓ 6 messages/day = 12.9 years on 2000 mAh battery
Cost: ✓ 60% cheaper than LoRaWAN for this scale
Verdict: Sigfox is ideal for this agricultural use case
Decision Framework: When Sigfox Message Limits Become a Problem
Use this decision matrix to determine if your application will hit Sigfox constraints.
Application Type
Typical Msg/Day
Payload Size
Sigfox Fit
Recommendation
Utility Meter (water/gas)
1-4
4-8 bytes
✓✓✓ Excellent
Use Sigfox
Soil Moisture (agriculture)
6-12
8-12 bytes
✓✓✓ Excellent
Use Sigfox
Asset Tracker (daily GPS)
4-24
8-12 bytes
✓✓ Good
Use Sigfox
Parking Sensor
10-50
4-6 bytes
✓ Acceptable
Use Sigfox if <50 msg/day
Environmental Monitor
144
10 bytes
⚠️ At limit
Redesign: reduce to hourly (24 msg/day)
Industrial Vibration
1440
1024 bytes
✗ Impossible
Use LoRaWAN or NB-IoT
Real-time Control
Continuous
Variable
✗ Impossible
Use LoRaWAN Class C or LTE
Red Flags (Sigfox is Wrong Choice):
⚠️ WARNING: Consider alternatives if ANY of these apply:
❌ Messages needed: >100/day per device
→ Impact: Exceeds 140/day limit with no safety margin
→ Solution: Use LoRaWAN (unlimited messages)
❌ Payload needed: >12 bytes
→ Impact: Cannot fit data in Sigfox uplink
→ Solution: Use LoRaWAN (up to 243 bytes) or NB-IoT (up to 1600 bytes)
❌ Downlink commands: >4/day
→ Impact: Exceeds Sigfox downlink limit
→ Solution: Use LoRaWAN (downlink after every uplink)
❌ Real-time latency: <5 seconds required
→ Impact: Sigfox latency is 30-90 seconds
→ Solution: Use NB-IoT or LTE-M
❌ Coverage unavailable in deployment area
→ Impact: Devices won't connect at all
→ Solution: Verify coverage FIRST, or use LoRaWAN (you deploy gateways)
Green Lights (Sigfox is Perfect):
✓ IDEAL USE CASE: All of these apply:
✓ Messages needed: <50/day per device
✓ Payload size: <12 bytes
✓ Downlink rarely needed (<4/day)
✓ Battery life critical (>10 years required)
✓ Sigfox coverage exists in deployment area
✓ Small-medium deployment (<5,000 devices)
✓ Uplink-only acceptable (sensors, not actuators)
✓ Cost-sensitive ($1-2/device/year budget)
Decision Tree:
Calculate your message frequency:
Messages/day = (24 hours × 60 minutes) / Interval_minutes
Examples:
Every 10 minutes: 144 messages/day ✗ EXCEEDS limit
Every 15 minutes: 96 messages/day ✓ OK (68% utilization)
Every 30 minutes: 48 messages/day ✓ OK (34% utilization)
Every 1 hour: 24 messages/day ✓✓ GOOD (17% utilization)
Every 4 hours: 6 messages/day ✓✓✓ EXCELLENT (4% utilization)
IF messages/day > 100:
→ Sigfox is wrong choice
→ Redesign interval OR choose LoRaWAN
IF messages/day = 70-100:
→ Sigfox marginal (no room for alerts)
→ Consider LoRaWAN for safety margin
IF messages/day < 70:
→ Sigfox viable (check other constraints)
Common Mistake: Designing for Average Load Instead of Peak Load
The Mistake: Developer calculates “average messages per day” but doesn’t account for peak events, alerts, or debugging needs.
Real-World Failure:
Building HVAC Monitor (200 units):
Initial Design:
Normal operation: Temperature reading every 30 minutes
Messages/day: 24 hours / 0.5 hours = 48 messages/day
Utilization: 48 / 140 = 34%
Developer conclusion: "Plenty of headroom!"
Devices hit daily quota at 2 PM, went silent for 10 hours
Building managers couldn’t see temperatures during critical period
Failure mode: Silent data loss (no error messages to users)
The Root Causes:
No peak load analysis:
Didn’t model “what if all sensors alert simultaneously?”
Didn’t account for commissioning/debugging phase (frequent messages)
No message throttling:
Alert mode sent messages every 5 minutes indefinitely
No logic to back off after hitting quota
No monitoring:
Cloud had no alert when devices hit message limit
Users only noticed when checking dashboard manually
The Fix:
1. Design for Peak Load:
// Bad: Alert mode with no limitif(temp >28.0){ sendEveryMinutes =5;// 288 messages/day - EXCEEDS LIMIT!}// Good: Alert mode with daily budgetif(temp >28.0&& messagesToday <100){ sendEveryMinutes =10;// 144 msg/day max, but throttle at 100}elseif(messagesToday <120){ sendEveryMinutes =30;// Graceful degradation}else{ sendEveryMinutes =60;// Conservative mode to avoid cutoff}
2. Implement Message Budget Tracking:
#define MAX_MESSAGES_PER_DAY 120// Leave 20-message buffervoid loop(){// Check message count before sendingint msgCount = getMessagesLastInterval(24*3600);// Last 24 hoursif(msgCount >= MAX_MESSAGES_PER_DAY){ Serial.println("Daily quota reached - entering low-frequency mode"); sendEveryMinutes =120;// Send once every 2 hours deepSleep(120*60*1000);return;}// Normal sending logic...}
3. Graduated Response Strategy:
Message Budget Allocation (140 total):
- Normal operation: 48 messages (34%)
- Alert budget: 40 messages (29%)
- Debug/commissioning: 20 messages (14%)
- Safety buffer: 32 messages (23%)
Alert Throttling Rules:
- If temp > 28°C and msgCount < 70:
Send every 10 min (up to 40 extra alerts)
- If temp > 28°C and msgCount >= 70:
Send every 30 min (graceful degradation)
- If msgCount > 120:
Send hourly only (preserve visibility)
4. Cloud-Side Monitoring:
# Alert when device approaches quotadef check_message_quota(device_id): last_24h = get_message_count(device_id, hours=24)if last_24h >120: send_alert(f"Device {device_id} used {last_24h}/140 messages (86%)")if last_24h >=140: send_critical_alert(f"Device {device_id} HIT QUOTA - may go silent!")
Revised Design:
Peak load scenario: 15% of devices in alert mode simultaneously
Normal devices (170): 48 msg/day each = 8,160 messages
Alert devices (30): 100 msg/day each (throttled) = 3,000 messages
Total network load: 11,160 messages/day
Total capacity: 200 × 140 = 28,000 messages/day
Peak utilization: 40% (safe)
Individual device budget:
Normal: 48 msg/day (34% utilization)
Alert (throttled): 100 msg/day (71% utilization)
Safety buffer: 40 messages for debugging
Result: System handles heatwave without going silent ✓
Key Lessons:
Design for 70% utilization max (leave 30% for peaks)
Implement graduated throttling (don’t just stop sending)
Monitor quota usage on cloud side (alert before cutoff)
Test worst-case: “What if all devices alert simultaneously?”
47.10 Case Study: Sigfox for Municipal Waste Bin Monitoring in Barcelona
The city of Barcelona deployed ultrasonic fill-level sensors in 2,300 public waste bins to optimize collection routes. This is widely regarded as one of Sigfox’s strongest use cases. Here is why the constraints align perfectly.
Why the Constraints Do Not Matter Here:
Sigfox Constraint
Waste Bin Requirement
Fit
12-byte payload limit
Fill level (1 byte, 0-100%) + battery voltage (1 byte) + temperature (1 byte) + tilt angle (1 byte) = 4 bytes
Uses only 33% of capacity
140 messages/day
Report every 30 minutes during active hours (6 AM - 10 PM) = 32 messages/day
Uses only 23% of allowance
No downlink (practically)
Sensors are passive reporters – no commands needed
Downlink not required
No firmware updates OTA
Sensor firmware is simple and stable (ultrasonic range + battery monitor)
Firmware rarely changes
Single operator dependency
Municipal contract can absorb operator risk (city budget, not startup)
Fuel savings: 41,000 liters/year (12.3 tonnes CO2 reduction)
Overflow incidents: reduced from ~180/month to ~12/month (93% reduction)
Sensor battery life: averaging 7.2 years (exceeding the 5-year target)
Annual savings: EUR 430,000 against a total sensor deployment cost of EUR 276,000 (7.7-month payback)
Why Not LoRaWAN?
Barcelona had existing Sigfox coverage (deployed by the Spanish operator). A LoRaWAN deployment would have required:
15-20 gateways across the city (~EUR 1,500 each = EUR 22,500-30,000)
A network server (cloud-hosted, ~EUR 6,000/year)
A network operations engineer (partial FTE, ~EUR 25,000/year)
The Sigfox approach cost EUR 1.20/device/year with zero infrastructure to manage. For a municipal government without IoT engineering staff, the managed network model was the decisive factor.
When This Logic Breaks Down:
If Barcelona wanted to add GPS tracking to collection trucks, camera-based contamination detection, or real-time route optimization with sub-minute updates, Sigfox would be insufficient. The lesson: Sigfox excels when the application genuinely needs only small, infrequent, uplink-only data – and waste monitoring is the textbook example.
47.11 Concept Relationships
Understanding how Sigfox use case analysis concepts interconnect:
Concept
Depends On
Enables
Common Confusion
Message Budget Calculation
Daily message limit (140), application interval
Battery life estimation, cost analysis
Confusing uplink (140) with downlink (4) limits
Payload Optimization
12-byte uplink limit, sensor data precision
Fitting multiple sensors in one message
Thinking 12 bytes means 12 sensors (type encoding matters)
Battery Life Estimation
TX current, message frequency, sleep current
Multi-year deployment feasibility
Forgetting to include sleep current in calculation
Message budget drives battery life (fewer messages = longer battery)
Payload optimization enables fitting use case within 12-byte constraint
TCO analysis requires understanding both device and infrastructure costs
Suitability depends on ALL constraints being met (any single violation = wrong technology)
Critical Insight: Sigfox use case analysis is elimination-based. Start with hard constraints (payload size, message frequency, coverage availability) before analyzing soft factors like cost. One violated constraint disqualifies Sigfox regardless of other advantages.
47.12 See Also
Related LPWAN Technologies:
LoRaWAN Overview – Alternative LPWAN with no message limits but higher deployment complexity
NB-IoT Fundamentals – Cellular LPWAN alternative with better latency and downlink capability
LPWAN Comparison – Side-by-side comparison of Sigfox, LoRaWAN, and NB-IoT trade-offs
IoT Cost Modeling – Framework for total cost of ownership calculations across technologies
47.13 Try It Yourself
Exercise 1: Message Budget Calculator
Given a deployment scenario, calculate if Sigfox message limits are acceptable:
Scenario: 500 parking sensors, each reporting state changes (occupied/vacant). Average vehicle parks for 2 hours. Parking lot has 40% turnover rate per day.
Tasks:
Calculate messages per sensor per day
Determine if within Sigfox 140 message/day limit
Design alert budget for anomalies (sensor stuck/malfunctioning)
What to Observe:
With 40% turnover, each sensor sees ~0.4 state changes/day on average
Best case: 0.4 x 2 messages (occupied + vacant) = 0.8 messages/day – well within limit
Worst case (busy sensor): 10 state changes/day = 20 messages/day – still safe
Alert budget: Reserve 20 messages/day for “sensor stuck” or “battery low” alerts
Conclusion: Sigfox is viable even with 10x worst-case margin
Exercise 2: Payload Optimization Challenge
Fit the following sensor data into Sigfox’s 12-byte uplink limit:
Sensors:
Soil moisture: 0-100% (0.1% precision)
Air temperature: -40 to +85 degrees C (0.1 degree C precision)
Soil temperature: -10 to +50 degrees C (0.1 degree C precision)
Battery voltage: 1.8-3.6V (0.01V precision)
Light intensity: 0-100,000 lux (1 lux precision)
Humidity: 0-100% (0.1% precision)
Device ID: 1-10,000 sensors
Tasks:
Choose data types for each sensor (uint8, int16, etc.)
Calculate total payload size
Verify it fits in 12 bytes
What to Observe:
Soil moisture: 0-100% at 0.1% precision = 0-1000 values = uint16 (2 bytes) – OR use uint8 for 0-100% at 1% precision (1 byte)
Air temp: -40 to +85 C at 0.1 C precision = -400 to +850 = int16 (2 bytes)
Soil temp: -10 to +50 C at 0.1 C precision = -100 to +500 = int16 (2 bytes)
Battery: 1.8-3.6V at 0.01V precision = 180-360 = uint8 if scaled (1 byte)
Light: 0-100,000 lux at 1 lux = uint32 (4 bytes) – OR use uint16 with log scale (2 bytes)
Humidity: 0-100% at 0.1% precision = uint16 (2 bytes) – OR uint8 at 1% precision (1 byte)
Device ID: 1-10,000 = uint16 (2 bytes)
Optimized solution: 2+2+2+1+2+1+2 = 12 bytes exactly! Use reduced precision for moisture/humidity (uint8) and log-scale light encoding (uint16).
Exercise 3: Battery Life Estimation
Calculate battery life for a Sigfox soil sensor:
Given:
Battery: 3000 mAh at 3.7V
Message frequency: 6 messages/day (every 4 hours)
TX current: 40 mA for 6 seconds per message
Sleep current: 1 uA
Tasks:
Calculate daily energy consumption (mAh/day)
Calculate battery life in years
Determine maximum message frequency for 10-year battery life
What to Observe:
TX energy: 6 msg/day x (40 mA x 6 sec / 3600 sec/hr) = 0.4 mAh/day
Sleep energy: 1 uA x 24 hr = 0.024 mAh/day
Total: 0.424 mAh/day
Battery life: 3000 mAh / 0.424 mAh/day = 7,075 days = 19.4 years
For exactly 10-year battery: 3000 / (10 x 365) = 0.822 mAh/day budget
Maximum messages: 0.822 / (40 mA x 6 sec / 3600) = 12.3 messages/day
Conclusion: Current 6 msg/day gives huge margin; could increase to 12 msg/day and still hit 10-year target
47.14 Interactive: Sigfox Battery Life & Message Budget Calculator
Show code
viewof msgPerDay = Inputs.range([1,140], {value:6,step:1,label:"Messages per day"})viewof txCurrent = Inputs.range([10,80], {value:40,step:1,label:"TX current (mA)"})viewof txDuration = Inputs.range([1,12], {value:6,step:0.5,label:"TX duration (sec)"})viewof sleepCurrent = Inputs.range([0.1,10], {value:1,step:0.1,label:"Sleep current (µA)"})viewof batteryCapacity = Inputs.range([500,10000], {value:2000,step:100,label:"Battery (mAh)"})