
Smart Indoor Cycling with Home Assistant and Wahoo Integration (Power-Based Automations)
Indoor cycling setups have come a long way—from simple trainers to fully connected ecosystems with detailed performance metrics. If you’re already using a Wahoo trainer, you likely have access to real-time data like power, cadence, and speed.
But instead of just viewing that data in an app, what if your entire home reacted to your effort?
In this guide, we’ll explore how to integrate your Wahoo trainer with Home Assistant and build powerful automations based on power output—arguably the most responsive and useful metric for real-time control.
Why Use Power for Automations?
While many cyclists rely on heart rate for training, power has some clear advantages in a smart home context:
- Instant response (no lag like heart rate)
- Direct measure of effort
- Consistent across sessions
- Perfect for triggering automations
Since the Wahoo integration provides power, cadence, and speed, power becomes the ideal signal to build around.
Components Needed
To get started, you’ll need the following:
1. Wahoo Trainer
Such as a Kickr or similar device that provides:
- Power (W)
- Cadence (RPM)
- Speed
2. Home Assistant
A running Home Assistant instance with access to HACS.
3. Wahoo Integration (HACS)
Install the integration from:
https://github.com/kilianyp/hacs-wahoo-wftnp
This will typically expose:
sensor.wahoo_powersensor.wahoo_cadencesensor.wahoo_speed
4. Smart Devices (Optional but Recommended)
To make your setup shine:
- Smart lights (RGB capable)
- Smart plugs (for fans or heaters)
- Climate systems
- Media players
Use Case: Power-Based Training Environment
Let’s build a practical automation:
👉 Your training room adapts dynamically based on power output
What This Automation Does
- Adjusts lighting color based on intensity
- Turns on a fan when effort increases
- Resets everything when the workout ends
Defining Power Zones
Instead of heart rate zones, we define power zones. These depend on your FTP (Functional Threshold Power), but here’s a simple generic model:
- Zone 1: < 100 W (Recovery)
- Zone 2: 100–180 W (Endurance)
- Zone 3: 180–250 W (Tempo)
- Zone 4+: > 250 W (Hard effort)
You can easily tweak these later.
YAML Automation Example
Below is a complete Home Assistant automation using only the sensors provided by the integration.
alias: Wahoo Power-Based Training Environment
description: Adjust lights and fan based on power output
mode: single
trigger:
- platform: state
entity_id: sensor.wahoo_power
condition:
- condition: numeric_state
entity_id: sensor.wahoo_power
above: 0
action:
- choose:
# Zone 1 - Recovery
- conditions:
- condition: numeric_state
entity_id: sensor.wahoo_power
below: 100
sequence:
- service: light.turn_on
target:
entity_id: light.training_room
data:
color_name: blue
brightness: 100
- service: switch.turn_off
target:
entity_id: switch.fan
# Zone 2 - Endurance
- conditions:
- condition: numeric_state
entity_id: sensor.wahoo_power
above: 100
below: 180
sequence:
- service: light.turn_on
target:
entity_id: light.training_room
data:
color_name: green
brightness: 150
- service: switch.turn_on
target:
entity_id: switch.fan
# Zone 3 - Tempo
- conditions:
- condition: numeric_state
entity_id: sensor.wahoo_power
above: 180
below: 250
sequence:
- service: light.turn_on
target:
entity_id: light.training_room
data:
color_name: yellow
brightness: 200
# Zone 4+ - Hard Effort
- conditions:
- condition: numeric_state
entity_id: sensor.wahoo_power
above: 250
sequence:
- service: light.turn_on
target:
entity_id: light.training_room
data:
color_name: red
brightness: 255
- service: switch.turn_on
target:
entity_id: switch.fan
# Reset when workout ends
- delay: "00:03:00"
- condition: numeric_state
entity_id: sensor.wahoo_power
below: 20
- service: light.turn_off
target:
entity_id: light.training_room
- service: switch.turn_off
target:
entity_id: switch.fan
How This Automation Works
Trigger
The automation fires every time your power value changes.
Conditions
Ensures that:
- The sensor is active
- You are actually pedaling (> 0 W)
Choose Block
Each power zone has:
- Its own condition
- Its own set of actions
This makes the automation easy to extend and maintain.
Reset Logic
After 3 minutes of low power (< 20 W), the system:
- Turns off lights
- Stops the fan
This prevents everything from staying on after your session.
Why This Works So Well
Using power instead of heart rate gives:
- Faster response (instant changes when you sprint)
- More precise automation triggers
- Better alignment with actual effort
For example:
- Sprint → immediate red lights and max fan
- Recovery → instant calm environment
Expanding the Setup
Once this is working, you can take it much further.
🌬️ Smart Climate Control
If you have a thermostat or HVAC system:
- Increase airflow when power exceeds 200 W
- Reduce room temperature gradually during long sessions
This helps maintain comfort over time.
🎵 Music Based on Effort
Connect a media player:
- Low power → calm music
- High power → high-energy playlist
This creates a fully immersive training experience.
💡 “Pain Cave” Lighting Effects
Enhance the visual experience:
- Pulsing red lights during sprints
- Smooth transitions between zones
- Sync with cadence for extra effect
🚿 Post-Workout Routine
When your session ends:
- Turn on bathroom heating
- Start ventilation
- Turn on lights in adjacent rooms
You can even automate a “cooldown mode” in your home.
Energy Awareness (kWh)
Since you’re already in Home Assistant, you can combine this setup with energy monitoring.
Ideas:
- Track total energy usage (kWh) of your training room
- Measure how much your fan, lights, and trainer consume
- Schedule workouts during lower electricity price periods
This is especially useful if you’re already using dynamic electricity pricing.
Dashboard Ideas
Create a dedicated cycling dashboard with:
- Live power (W)
- Cadence (RPM)
- Speed
- Zone indicator (based on power)
- Fan and light status
This gives you a complete overview without switching apps.
Final Thoughts
Using your Wahoo trainer with Home Assistant unlocks a new level of training experience. By focusing on power-based automations, you get:
- Immediate responsiveness
- Reliable triggers
- A more immersive environment
And the best part? This is just the beginning.
You can continue to refine, experiment, and build a setup that perfectly matches your training style—whether that’s structured intervals, endurance rides, or all-out efforts.
Once you start automating your training space, it’s hard to go back.
Some of the links in this article are "affiliate links", a link with a special tracking code. This means if you click on an affiliate link and purchase the item, we will receive an affiliate commission. The price of the item is the same whether it is an affiliate link or not. Regardless, we only recommend products or services we believe will add value to our readers. By using the affiliate links, you are helping support our Website, and we genuinely appreciate your support.