Scenario: You are architecting the MQTT topic structure for a 10-floor commercial building with multiple sensor types per floor. The system needs to support dashboards filtering by floor, by sensor type, and by specific rooms.
Given:
- Building: 10 floors, 20 rooms per floor
- Sensors per room: temperature, humidity, occupancy, air quality (CO2)
- Actuators per room: HVAC, lights, blinds
- Requirements: Floor-level dashboards, building-wide analytics, room-specific control
- Expected message volume: ~200,000 messages/day
Solution:
Step 1: Define Topic Hierarchy Structure
Use a hierarchical pattern that enables efficient wildcard subscriptions:
{building}/{floor}/{room}/{device_type}/{metric}
Step 2: Design Topic Examples
# Sensor data (published by devices)
building1/floor03/room12/sensor/temperature
building1/floor03/room12/sensor/humidity
building1/floor03/room12/sensor/occupancy
building1/floor03/room12/sensor/co2
# Actuator commands (subscribed by devices)
building1/floor03/room12/hvac/setpoint
building1/floor03/room12/lights/state
building1/floor03/room12/blinds/position
# Device status (published by devices)
building1/floor03/room12/hvac/status
building1/floor03/room12/lights/status
Step 3: Map Subscription Patterns to Use Cases
| Building analytics (all data) |
building1/# |
All 200K/day |
| Floor 3 dashboard |
building1/floor03/# |
20K/day |
| All temperatures |
building1/+/+/sensor/temperature |
20K/day |
| Room 12 control panel |
building1/floor03/room12/# |
1K/day |
| All HVAC status |
building1/+/+/hvac/status |
10K/day |
Step 4: Calculate Topic Count
Rooms: 10 floors x 20 rooms = 200 rooms
Sensor topics: 200 rooms x 4 sensors = 800 topics
Actuator topics: 200 rooms x 3 actuators x 2 (command + status) = 1,200 topics
Total: ~2,000 unique topics
Result: The topic hierarchy building1/floor03/room12/sensor/temperature enables:
- 5 subscription levels: Building, floor, room, device type, metric
- Efficient filtering: Floor dashboard uses 1 subscription (
building1/floor03/#) instead of 400
- Scalable: Adding floor 11 requires no subscription changes for building-wide dashboards
- Clear organization: Topic path is self-documenting
Key Insight: Invest time in topic hierarchy design before deployment. A well-designed hierarchy reduces subscription count by 10-100x and makes the system self-documenting. The pattern {location}/{sublocation}/.../{device}/{metric} works for most IoT applications. Avoid flat topics like sensor_floor3_room12_temp which cannot be filtered with wildcards.