Live-Abfrage von Min/Max/Avg via Chat-Command. Plus drei System-Actions für Reset/Tracker/Summary.
Drei System-Actions im Zusammenspiel. Reset beim Stream-Start, Tracker bei jedem Pulse, Summary beim Stream-Ende. Plus ein optionaler !hrstats Chat-Command für Live-Abfrage. Globals halten % hrMin% Globale Variable %hrMin% Tiefster Puls: startet bei 999, wird beim ersten Pulse echte Min.
Variablen-Doku , % hrMax% Globale Variable %hrMax% Höchster Puls: startet bei 0.
Variablen-Doku , % hrSum% Globale Variable %hrSum% Summe aller Pulse für Avg-Berechnung.
Variablen-Doku und % hrCount% Globale Variable %hrCount% Anzahl Messungen. Avg = hrSum / hrCount.
Variablen-Doku .
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)
Trigger: Heart Rate Pulse mit Min 30, Max leer (filter HR-Drops auf 0).
1 Global Get: hrMin Core › Globals › Global (Get) Global Name hrMin Variable Name currentMin Persisted aktiv
Input %heartRate% Operation Less Than Value %currentMin%
2a Then Global Set: hrMin aktualisieren Core › Globals › Global (Set) Global Name hrMin Value %heartRate% Persisted aktiv
3 Global Get: hrMax Core › Globals › Global (Get) Global Name hrMax Variable Name currentMax Persisted aktiv
Input %heartRate% Operation Greater Than Value %currentMax%
4a Then Global Set: hrMax aktualisieren Core › Globals › Global (Set) Global Name hrMax Value %heartRate% Persisted aktiv
5 Global Set: hrSum (Increment) Core › Globals › Global (Set) Mode Increment, addiert den aktuellen %heartRate% auf hrSum.
Global Name hrSum Mode Increment Amount %heartRate% Persisted aktiv
6 Global Set: hrCount (Increment by 1) Core › Globals › Global (Set) Global Name hrCount Mode Increment Amount 1 Persisted aktiv
Trigger: Twitch > Channel > Stream Offline
1 Global Get: hrMin → finalMin 2 Global Get: hrMax → finalMax 3 Global Get: hrSum → finalSum 4 Global Get: hrCount → finalCount 5 If/Else: %finalCount% Less Than 1
Then 5a Break (keine Daten: kein Summary) 6 Set Argument: avg = $div(%finalSum%, %finalCount%)$ 7 Send Message: "📊 HR-Stats: Min %finalMin% · Max %finalMax% · Avg %avg% BPM (%finalCount% Messungen)"
Live-Abfrage des aktuellen Stands.
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
Then 5a Send Message: "@%user% Noch keine HR-Daten heute." 6 Set Argument: avg = $div(%currentSum%, %currentCount%)$ 7 Send Message: "📊 HR heute: Min %currentMin% · Max %currentMax% · Avg %avg% BPM"
Situation Resultat !hrstats nach 30 min Stream📊 HR heute: Min 68 · Max 142 · Avg 95 BPM!hrstats vor erstem Pulse@%user% Noch keine HR-Daten heute.Stream-Offline nach 4 h Bot postet automatisches Summary mit ~14400 Messungen
hrMin startet zu niedrig : wenn mit 0 initialisiert, bleibt Min für immer 0. Hoher Start-Wert (999) ist Pflicht.
Division durch 0 : bei Stream-End ohne Messungen schlägt $div$ fehl. If/Else %finalCount% Less Than 1 → Break davor.
HR-Disconnect = 0 BPM : Min würde fälschlich auf 0 sinken. Trigger-Filter Min = 30 schützt davor.
Persistierte Werte zwischen Streams : ohne Reset akkumuliert hrSum/hrCount ewig. Stream-Online-Reset ist Pflicht.
Discord-Stats-Embed : am Ende des Summary einen Discord-Webhook mit Embed-Format posten für Stream-Postmortem.
CSV-Log : Core > File I/O > Write To File im Append-Mode bei jedem Stream-Ende, für Langzeit-Vergleich in Excel.
Top-3-Spikes : separate Action die alle Pulse > 170 in eine Liste loggt, beim Summary die drei höchsten zeigen.
Import-String folgt
Die Action ist 1:1 nach Anleitung oben nachbaubar.