Skip to content

Conversation

@KoenigMjr
Copy link
Contributor

Neue Features

  • Eigenständige Telegram-Kommunikation:
    Die externe Abhängigkeit python-telegram-bot wurde entfernt. Stattdessen erfolgt die Kommunikation mit der Telegram Bot API direkt über requests.
  • Retry-Mechanismus mit Exponential Backoff:
    Eingebaute Wiederholungslogik bei temporären Fehlern (z. B. Netzwerkprobleme oder Rate Limits).
    Unterstützt retry_after-Werte von Telegram.
  • Asynchrone Verarbeitung über Hintergrundthread:
    Ein Worker-Thread verarbeitet eine Nachrichtenwarteschlange, um nicht-blockierend mehrere Nachrichten zu senden.
  • Standortübertragung integriert:
    Unterstützt sendLocation analog zu bisherigen Funktionalitäten.

Konfigurierbare Parameter

  • max_retries: Maximale Anzahl an Sendeversuchen
  • initial_delay: Startverzögerung bei Fehlern
  • max_delay: Maximale Backoff-Verzögerung
  • startup_message: Optionaler Starttext beim Laden des Plugins

Entfernt

  • Entfernt: python-telegram-bot-Abhängigkeiten (telegram, telegram.ext, messagequeue, etc.)
  • Entfernt: MQBot-Klasse und Queue-Handling via telegram.ext.messagequeue
  • Entfernt: Logging via logging.debug() – ersetzt durch strukturierte Nutzung des logging-Moduls

Änderungen an Plugin-Struktur

  • Neu: TelegramSender-Klasse zur Kapselung aller Telegram-Operationen
  • BoswatchPlugin nutzt nun self.sender statt self.bot
  • Fallbacks und Fehlerbehandlung wurden erweitert und vereinheitlicht

@KoenigMjr KoenigMjr force-pushed the feature/telegram-neu branch 4 times, most recently from 6b54965 to 80c6c76 Compare July 13, 2025 17:33
@KoenigMjr
Copy link
Contributor Author

KoenigMjr commented Jul 13, 2025

Servus,
da das Telegram-Plugin ja derzeit nicht funktionstüchtig ist, hab ich mich mal an ein refactoring/redesign gewagt.

Hinsichtlich des soft limits von Telegram (ca. 30 Nachrichten pro Gruppe) und um da keinen Alarm zu übersehen habe ich eine Warteschlange eingefügt.

Ansonsten verzicht auf eine externe Abhängigkeit

Würde dann #107 lösen.

Hab das Plugin bei mir auf meinem Pi am laufen und funktioniert zumindest mit ZVEI soweit. Allerdings habe ich noch keine "Maximallastsituation" gehabt wie z.B. bei Probealarmen, wo die Warteschleife sicher greifen muss.

Schaut mal bitte, wie es euch so gefällt. Basiert auch auf @janspeller seiner Variante damals (Koordinatenhandling etc).

@KoenigMjr KoenigMjr marked this pull request as ready for review July 13, 2025 17:45
@KoenigMjr KoenigMjr force-pushed the feature/telegram-neu branch 3 times, most recently from 22bda44 to d141b68 Compare July 13, 2025 18:16
@KoenigMjr
Copy link
Contributor Author

inzwischen hab ich mal eine Überlast-Situation erreicht. Im Log steht dann:

DATUM UHRZEIT - Thread-1 (_worker_loop) telegram _send_to_telegram [WARNING ] Rate Limit erreicht – warte 19 Sekunden.
DATUM UHRZEIT - Thread-1 (_worker_loop) telegram _worker_loop [WARNING ] Erneutes Einreihen der Nachricht (Versuch 1).

@KoenigMjr KoenigMjr force-pushed the feature/telegram-neu branch from 476a488 to 5455685 Compare August 4, 2025 08:07
@Schrolli91
Copy link
Member

@KoenigMjr Testest du hier noch, oder bist du inzwischen der Meinung das ist stabil so wie es jetzt ist?

@KoenigMjr
Copy link
Contributor Author

KoenigMjr commented Aug 8, 2025

Für mich ist es stabil! Läuft seit ein paar Wochen ohne Probleme, allerdings nur mit ZVEI und ohne die Koordinaten.
Das hab ich aber soweit es ging unverändert aus der bisherigen Version vom Jan übernommen.
Also wenn jemand sich findet der noch testet, eventuell POCSAG oder sogar die Koordinaten im Echtbetrieb... das ist mir leider derzeit verwehrt aufgrund Datenlage.
Aber per se funktioniert der Versand tadellos IMHO.

Durch Einbau einer Warteschlange kein Datenverlust bei belegter API (Sendelimit ca. 30 Nachrichten/min, gibt aber Soft-Limit)

Exponentielles Backoff mit Maximalgrenze
Retry-Zähler mit Abbruch bei zu vielen Fehlversuchen
Kein Wiederholen bei permanenten Fehlern (400/401)
dynamische Zeitanpassung bei 429 Fehlern

Fehlerrobustheit verbessert hinsichtlich Connection Error

neues Plugin ohne telegram-bot

* Timeout (timeout=10),
* HTTP-Fehlerprüfung (raise_for_status()),
* Retry-Logik (3 Versuche mit wachsender Wartezeit),
* Sauberem Logging mit logger statt print).

send_location aus altem Skript übernommen und angepasst
update zur neuen Telegram Version

*in Konfiguration hinzugefügt:*
Startup_message
max_retries
initial_delay
max_delay

*gelöscht:*
queue

*im Beispiel:*
Startup_message hinzugefügt
@KoenigMjr KoenigMjr force-pushed the feature/telegram-neu branch from 5455685 to 523329a Compare August 8, 2025 19:11
@Schrolli91
Copy link
Member

@janspeller hast du die Möglichkeit, das irgendwie zu testen?

Copy link
Member

@Schrolli91 Schrolli91 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - @KoenigMjr bisher alles stabil bei dir? Dann merge ich ...

@KoenigMjr
Copy link
Contributor Author

ja, läuft bei mir gut und durchgängig ohne Probleme :)

@Schrolli91 Schrolli91 merged commit 017e882 into BOSWatch:develop Oct 22, 2025
5 checks passed
@KoenigMjr KoenigMjr deleted the feature/telegram-neu branch October 22, 2025 07:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants