Positiv-Meldung täglich um 8:00

This commit is contained in:
2025-12-22 16:06:10 +00:00
parent 27f7c5544d
commit 8e292c1216

View File

@@ -26,6 +26,9 @@ ALERT_EMAIL = os.getenv("ALERT_EMAIL", SMTP_USER) # Standard: an sich selbst
last_alert_time = None last_alert_time = None
ALERT_COOLDOWN = int(os.getenv("ALERT_COOLDOWN", "3600")) # 1 Stunde zwischen Alarmen ALERT_COOLDOWN = int(os.getenv("ALERT_COOLDOWN", "3600")) # 1 Stunde zwischen Alarmen
last_daily_report_date = None
DAILY_REPORT_HOUR = int(os.getenv("DAILY_REPORT_HOUR", "8")) # 8:00 Uhr morgens
def send_alert_email(subject, message): def send_alert_email(subject, message):
"""Sendet eine E-Mail-Benachrichtigung.""" """Sendet eine E-Mail-Benachrichtigung."""
@@ -96,6 +99,55 @@ def send_recovery_email():
) )
def send_daily_report():
"""Sendet einen täglichen Positiv-Bericht um 8:00 Uhr."""
global last_daily_report_date
now = datetime.now()
today = now.date()
# Prüfen, ob heute schon ein Bericht gesendet wurde
if last_daily_report_date == today:
return # Heute wurde bereits berichtet
# Prüfen, ob es bereits 8:00 Uhr oder später ist
if now.hour < DAILY_REPORT_HOUR:
return # Noch nicht 8:00 Uhr
try:
msg = MIMEMultipart()
msg['From'] = SMTP_USER
msg['To'] = ALERT_EMAIL
msg['Subject'] = "✅ CameraSave: Täglicher Status-Bericht"
body = f"""
CameraSave Täglicher Status-Bericht
====================================
Das CameraSave-System läuft normal und überwacht weiterhin Ihre Kameras.
Status: ✅ Aktiv
Zeit: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
Server: {os.uname().nodename if hasattr(os, 'uname') else 'Unknown'}
Dieser Bericht wird einmal täglich automatisch versendet.
Bei Problemen erhalten Sie eine separate Alarm-E-Mail.
"""
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls()
server.login(SMTP_USER, SMTP_PASS)
server.send_message(msg)
server.quit()
last_daily_report_date = today
print(f"📧 Täglicher Status-Bericht gesendet an {ALERT_EMAIL}")
except Exception as e:
print(f"❌ Fehler beim Versand des täglichen Berichts: {e}")
def main(): def main():
"""Hauptschleife des Monitoring.""" """Hauptschleife des Monitoring."""
print("🔍 CameraSave Monitor gestartet") print("🔍 CameraSave Monitor gestartet")
@@ -118,6 +170,8 @@ def main():
# System ist wieder online # System ist wieder online
send_recovery_email() send_recovery_email()
was_down = False was_down = False
# Täglichen Positiv-Bericht senden
send_daily_report()
else: else:
print(f"[{timestamp}] ❌ {status}") print(f"[{timestamp}] ❌ {status}")
if not was_down: if not was_down: