Positiv-Meldung täglich um 8:00
This commit is contained in:
54
monitor.py
54
monitor.py
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user