''' Wetterserver auf der Sternwarte überprüfen Täglich morgens um 07:10 (mit Hilfe des cron) wird die Datei 'tempday.png' von sternwarte-welzheim.de geholt und gechecked, ob sie neuer ist als die von gestern. Dazu wird das Datum in der PNG-Datei verglichen. Falls es das gleiche Datum ist, wird eine E-Mail an rexfue@gmail.com gesendet. *** Versiongeschichte V 1.0.1 2025-08-04 rxf - kleine Textverbesserunegen - keine Archivierung V 1.0.0 2025-08-03 rxf - erste laufende Version ''' VERSION = "1.0.1" VDATE = "2025-08-04" import requests from PIL import Image import pytesseract from datetime import datetime import re, os, smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # ----------------------- # Einstellungen # ----------------------- # Tesseract Pfad (nur für Windows nötig) # pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe" # <– Passe an, falls nötig # E-Mail-Konfiguration EMAIL_ABSENDER = os.getenv("GMX_EMAIL") EMAIL_EMPFÄNGER = "rexfue@gmail.com" SMTP_SERVER = "smtp.gmx.com" SMTP_PORT = 465 SMTP_USER = os.getenv("GMX_EMAIL") SMTP_PASS = os.getenv("GMX_PASSWORD") print(f"Wetterserver-Check\r\nVersion {VERSION} vom {VDATE}") # ----------------------- # Grafik herunterladen # ----------------------- url = "https://sternwarte-welzheim.de/wetter/tempday.png" res = requests.get(url) if res.status_code != 200: print("❌ Fehler beim Abrufen des Bildes") exit(1) with open("wetter_heute.png", "wb") as f: f.write(res.content) # ----------------------- # OCR und Datumserkennung # ----------------------- img = Image.open("wetter_heute.png") text = pytesseract.image_to_string(img, lang='deu') match = re.search(r'\d{4}\-\d{2}\-\d{2}', text) if not match: print("⚠️ Kein Datum im Bild gefunden!") exit(1) heutiges_datum = match.group(0) print(f"🕵️ Erkanntes Datum: {heutiges_datum}") # ----------------------- # Vergleich mit vorherigem # ----------------------- letztes_datum = None if os.path.exists("last_date.txt"): with open("last_date.txt", "r") as f: letztes_datum = f.read().strip() sendit = False if heutiges_datum == letztes_datum: print("⚠️ Keine neue Grafik – Datum gleich wie gestern.") body = f"Die Wettergrafik auf {url} wurde anscheinend nicht aktualisiert.\nErkanntes Datum: {heutiges_datum}" subject = "⚠️ Wetterserver hängt!" sendit = True else: sendit = True print("✅ Neue Grafik erkannt.") body = f"Die Wettergrafik auf {url} ist aktuell: {heutiges_datum}" subject = "✅ Wetterserver OK!" with open("last_date.txt", "w") as f: f.write(heutiges_datum) # ----------------------- # E-Mail senden # ----------------------- if sendit: msg = MIMEMultipart() msg["From"] = EMAIL_ABSENDER msg["To"] = EMAIL_EMPFÄNGER msg["Subject"] = subject msg.attach(MIMEText(body, "plain")) try: with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server: server.login(SMTP_USER, SMTP_PASS) server.send_message(msg) print("📧 Benachrichtigungs-Mail gesendet.") except Exception as e: print(f"❌ Fehler beim Senden der Mail: {e}")