Ich vermute eine https://de.wikipedia.org/wiki/Race_Condition:
Der ursprüngliche Trigger wird mehrfach ausgelöst (z.B. Fenster auf, zu und wieder auf / Wackelkontakt?). Dadurch wird das Intervall mehrfach gestartet, aber nur die letzte Referenz in der Variable gespeichert. Stoppen des Intervalls löscht dann nur das referenzierte, nicht das unreferenzierte.
Ich sehe zwei Lösungen:
1. Trigger ändern auf "wurde geändert" plus eine zusätzliche Prüfung ob der Datenpunkt wahr ist. Zu Beginn des Triggers als erstes die Intervalle stoppen.
2. Die Lösung komplett ohne das 300ms-Intervall abbilden. Dazu das Intervall durch einen weiteren Trigger (außerhalb des anderen) ersetzen, der den Telegram-DP prüft. Wenn diese Prüfung erfolgreich ist, UND Fenster offen, dann Nachricht schreiben.