2 Scheduler
ppfeiffer edited this page 2026-04-19 13:20:48 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Scheduler Geplante Nachrichten

Der Scheduler sendet täglich wiederkehrende Nachrichten auf konfigurierten Channels. Seit der Einführung des Web Viewers können geplante Nachrichten direkt über die Benutzeroberfläche unter /scheduler verwaltet werden ohne manuelles Bearbeiten der config.ini.


Konfiguration (config.ini)

[Scheduled_Messages]
# Format: HHMM = channel:nachricht  (24-Stunden-Format, kein Doppelpunkt in der Zeit)
0800 = general:Guten Morgen! Bot ist online.
1200 = general:Mittagsstatus  alle Systeme in Betrieb.
1800 = #meshdd:Abendupdate: {total_contacts} Nodes gehört, {total_repeaters} Repeater aktiv.

Zeitzone optional im [Bot]-Abschnitt:

[Bot]
timezone = Europe/Berlin

Web-Interface (/scheduler)

Das Scheduler-Web-Interface ist unter /scheduler im Web Viewer erreichbar.

Funktionen

Funktion Beschreibung
Übersicht Tabelle aller Einträge, sortiert nach Uhrzeit
Statistiken Anzahl Einträge, nächste Nachricht heute, verwendete Channels
Neu anlegen Modal mit Zeitauswahl, Channel-Vorschlägen und Nachrichtenfeld
Bearbeiten Alle Felder inkl. Uhrzeit änderbar
Löschen Bestätigungsdialog vor dem Löschen
Vorschau Live-Vorschau des resultierenden config.ini-Eintrags
Auto-Reload Scheduler wird nach jeder Änderung automatisch neu geladen

Auto-Reload

Nach jeder Änderung über das Web-Interface wird ein Flag in der Datenbank (bot_metadata.scheduler_reload_requested) gesetzt. Der Scheduler-Thread prüft dieses Flag alle 5 Sekunden und lädt die geplanten Nachrichten neu ein Bot-Neustart ist nicht erforderlich.

Channel-Auswahl

Das Channel-Eingabefeld schlägt automatisch alle bekannten Channels aus der Datenbank vor (identisch mit den Channels, die unter /channels angezeigt werden). Eigene Channel-Namen können jederzeit manuell eingetippt werden.


Platzhalter

Nachrichten können dynamische Werte enthalten, die beim Versand ersetzt werden:

Netzwerk-Statistiken

Platzhalter Beschreibung
{total_contacts} Alle bekannten Nodes
{total_repeaters} Repeater gesamt
{total_companions} Companions gesamt
{total_roomservers} RoomServer gesamt
{total_sensors} Sensoren gesamt
{recent_activity_24h} Aktive Nodes in den letzten 24 Stunden

Neue Nodes (7 Tage)

Platzhalter Beschreibung
{new_companions_7d} Neue Companions in den letzten 7 Tagen
{new_repeaters_7d} Neue Repeater in den letzten 7 Tagen
{new_roomservers_7d} Neue RoomServer in den letzten 7 Tagen
{new_sensors_7d} Neue Sensoren in den letzten 7 Tagen

Aktive Nodes (30 Tage)

Platzhalter Beschreibung
{total_contacts_30d} Aktive Nodes in den letzten 30 Tagen
{total_repeaters_30d} Aktive Repeater in den letzten 30 Tagen
{total_companions_30d} Aktive Companions in den letzten 30 Tagen
{total_roomservers_30d} Aktive RoomServer in den letzten 30 Tagen
{total_sensors_30d} Aktive Sensoren in den letzten 30 Tagen

Escape-Sequenzen

Sequenz Bedeutung
\n Neue Zeile
\t Tabulator
\\ Literaler Backslash

Beispiel

[Scheduled_Messages]
0700 = #meshdd:MeshDD Morgenstatus\nNodes: {total_contacts} ({total_repeaters} Repeater)\nNeu (7d): {new_companions_7d} Companions, {new_repeaters_7d} Repeater

Interval-Advertising

Neben festen Uhrzeiten kann der Bot in regelmäßigen Abständen einen Flood-Advert senden:

[Bot]
advert_interval_hours = 6   # 0 = deaktiviert

Technische Details

  • Zeitformat in config.ini: HHMM (4 Ziffern, z.B. 0830 für 08:30)
  • Format pro Eintrag: HHMM = channel:nachricht
  • Bibliothek: schedule führt Jobs täglich zur angegebenen Zeit aus
  • Thread: Der Scheduler läuft in einem eigenen Daemon-Thread (scheduler.py)
  • Reload-Mechanismus: bot_metadata-Flag scheduler_reload_requested wird vom Web Viewer gesetzt und vom Scheduler-Thread innerhalb von ≤5 Sekunden verarbeitet