Heart Rate Stats — Min/Max/Avg pro Stream¶
Trackt deinen tiefsten/höchsten Puls pro Stream und den Durchschnitt. Bei Stream-Ende automatischer Zusammenfassungs-Post.
Voraussetzung: HypeRate/Pulsoid verbunden Patterns: Heart Rate Trigger + Globals (Min/Max/Sum/Count) + Stream Online/Offline Trigger Sub-Actions: Tracker-Action (5) + Reset-Action (3) + Summary-Action (4)
Drei Actions im Zusammenspiel¶
| Action | Trigger | Was sie tut |
|---|---|---|
[Sys] HR Stats Reset |
Stream Online | Min/Max/Sum/Count zurücksetzen |
[Sys] HR Stats Tracker |
Heart Rate Pulse | Min/Max updaten, Sum/Count hochzählen |
[Sys] HR Stats Summary |
Stream Offline | Stats berechnen + posten |
Plus optional !hrstats als Chat-Command der den aktuellen Stand zeigt.
Action: [Sys] HR Stats Reset¶
Trigger: Twitch → Channel → Stream Online
1. Global (Set): hrMin = 999 (Persisted, hoch starten damit erstes Min greift)
2. Global (Set): hrMax = 0 (Persisted)
3. Global (Set): hrSum = 0 (Persisted)
4. Global (Set): hrCount = 0 (Persisted)
Action: [Sys] HR Stats Tracker¶
Trigger: Heart Rate Pulse (Min 30, Max leer — filter offline-Disconnects mit 0)
Sub-Action 1: Min updaten¶
1. Global (Get): hrMin → currentMin
2. If/Else: %heartRate% Less Than %currentMin%
└── Global (Set): hrMin = %heartRate% (Persisted)
Sub-Action 2: Max updaten¶
3. Global (Get): hrMax → currentMax
4. If/Else: %heartRate% Greater Than %currentMax%
└── Global (Set): hrMax = %heartRate% (Persisted)
Sub-Action 3: Sum + Count für Avg¶
5. Global (Set): hrSum = (Increment by %heartRate%) Persisted
6. Global (Set): hrCount = (Increment by 1) Persisted
Wichtig: Increment-Mode in Global (Set) erlaubt "+N" Operationen. Bei Mode = Increment und Increment-Amount = %heartRate% wird der Wert dynamisch um den HR-Wert erhöht.
Action: [Sys] HR Stats Summary¶
Trigger: Twitch → Channel → Stream Offline
Sub-Action 1-4: Werte lesen + Avg berechnen¶
1. Global (Get): hrMin → finalMin
2. Global (Get): hrMax → finalMax
3. Global (Get): hrSum → finalSum
4. Global (Get): hrCount → finalCount
5. Set Argument: avg = $div(%finalSum%, %finalCount%)$
$div(a, b)$ ist die Inline-Function für Division.
Sub-Action 5: Summary posten¶
6. Send Message: "📊 Stream-HR-Stats: Min %finalMin% · Max %finalMax% · Avg %avg% BPM (über %finalCount% Messungen)"
Bonus: Stats in Datei loggen für Langzeit-Vergleich:
7. Write To File:
File: D:\hr-stats.log
Mode: Append
Content: [%timestamp%] Min:%finalMin% Max:%finalMax% Avg:%avg% Count:%finalCount%
Chat-Command: !hrstats¶
User können den aktuellen Stand abfragen:
Action: [Cmd] !hrstats¶
Trigger: Command !hrstats
1. Global (Get): hrMin → currentMin
2. Global (Get): hrMax → currentMax
3. Global (Get): hrSum → currentSum
4. Global (Get): hrCount → currentCount
5. If/Else: %currentCount% Less Than 1
├── Send Message: "@%user% Noch keine HR-Daten heute."
└── Break
6. Set Argument: avg = $div(%currentSum%, %currentCount%)$
7. Send Message: "📊 HR diesen Stream: Min %currentMin% · Max %currentMax% · Avg %avg% BPM"
Verwendungsbeispiele¶
Während des Streams¶
| Chat | Resultat |
|---|---|
!hrstats (nach 30 min) |
"📊 HR diesen Stream: Min 68 · Max 142 · Avg 95 BPM" |
!hrstats (vor erstem Pulse) |
"@user Noch keine HR-Daten heute." |
Nach Stream-Ende (automatisch)¶
Bot postet bei Stream-Offline: 📊 Stream-HR-Stats: Min 65 · Max 178 · Avg 102 BPM (über 12.847 Messungen)
Erweiterung: Top-3-Spikes des Streams¶
Statt nur Max — die Top-3-höchsten Spikes mit Game-Info:
Komplexer ohne C#. Pragmatisch: nur Max tracken plus separates Logging der Spitzen-Events.
Erweiterung: Historie¶
Bei jedem Stream-Ende ans Log anhängen + im SB-UI auswertbar machen. Oder via Discord-Webhook ein Stats-Embed jeden Stream.
[Sys] HR Stats Summary
├── (Stats berechnen wie oben)
└── Discord Basic Webhook:
Content: "📊 Stream-Stats — Min %finalMin% Max %finalMax% Avg %avg%"
Häufige Fallen¶
- hrMin Initial-Wert — wenn du mit 0 startest, ist Min immer 0. Mit 999 (oder höher als jeder realistische HR) anfangen
- Avg-Berechnung bei Count=0 — Division durch 0 schlägt fehl. Mit If/Else davor abfangen
- Persistierte Werte über Streams — Reset bei Stream Online ist Pflicht, sonst akkumuliert ewig
- Count overflows nicht — bei 4h Stream × 3600s = 14.400 Messungen, problemlos in int
Quellen¶
- Heart Rate Triggers: setup.md
- Stream Online Trigger: https://docs.streamer.bot/api/triggers/twitch/channel/stream-online
- Globals Pattern: patterns/03-globals.md