Integration

Heart Rate

Display your heart rate on stream in real-time. React to BPM changes with alerts, OBS effects, and more. Works with Pulsoid, HypeRate, and Bluetooth devices.

Overview

FaustBot can connect to various heart rate sources for real-time BPM data:

Real-Time BPM

Get your current heart rate instantly.

Statistics

Track min, max, and average BPM.

Thresholds

Trigger actions at specific heart rates.

Multiple Sources

Pulsoid, HypeRate, or Bluetooth.

Heart Rate Sources

This is a generic heart rate API. For specific services, see the dedicated Pulsoid and HypeRate integration pages.

Setup

1

Choose a Provider

Select a heart rate provider: Pulsoid, HypeRate, or direct Bluetooth connection. Each has its own setup in FaustBot.

2

Connect Your Device

Pair your heart rate monitor (chest strap, smartwatch, or fitness band) with your chosen provider's app.

3

Configure Thresholds

In Integrations → Heart Rate, set up threshold values to trigger events when your heart rate reaches specific levels.

Triggers

Heart Rate Update BPM value changed
Threshold Reached BPM crossed a configured threshold
High Heart Rate BPM exceeded high threshold
Low Heart Rate BPM dropped below low threshold

Trigger Variables

VariableDescription
%heartRate%Current BPM value
%heartRateMin%Minimum BPM this session
%heartRateMax%Maximum BPM this session
%heartRateAvg%Average BPM this session
%threshold%Threshold that was crossed

Scripting API

Access heart rate data from your scripts:

Getting BPM Data

# Get current heart rate
bpm = CPH.HeartRateGetBpm()
CPH.LogInfo(f"Current BPM: {bpm}")

# Get statistics
stats = CPH.HeartRateGetStats()
CPH.LogInfo(f"Min: {stats['min']}, Max: {stats['max']}, Avg: {stats['avg']}")

# Check if connected
if CPH.HeartRateIsConnected():
    CPH.LogInfo("Heart rate monitor connected")

Reacting to Heart Rate

# React to high heart rate
def Execute():
    bpm = CPH.HeartRateGetBpm()

    if bpm > 150:
        CPH.SendMessage("MY HEART IS RACING!")
        CPH.ObsSetSourceFilterEnabled("Webcam", "Shake", True)
    elif bpm > 120:
        CPH.SendMessage(f"Getting intense! BPM: {bpm}")

    return True

# Update OBS text source with current BPM
def Execute():
    bpm = CPH.HeartRateGetBpm()
    CPH.ObsSetGdiText("Heart Rate", f"❤️ {bpm} BPM")
    return True

See the full API reference for all available heart rate methods.