Compare commits
1 Commits
repeat_ech
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8e292c1216 |
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
|
||||
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):
|
||||
"""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():
|
||||
"""Hauptschleife des Monitoring."""
|
||||
print("🔍 CameraSave Monitor gestartet")
|
||||
@@ -118,6 +170,8 @@ def main():
|
||||
# System ist wieder online
|
||||
send_recovery_email()
|
||||
was_down = False
|
||||
# Täglichen Positiv-Bericht senden
|
||||
send_daily_report()
|
||||
else:
|
||||
print(f"[{timestamp}] ❌ {status}")
|
||||
if not was_down:
|
||||
|
||||
Reference in New Issue
Block a user