import asyncio import os import logging from pyppeteer import launch # Logging-Konfiguration logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') # --- Konfiguration --- HA_URL = "http://192.168.178.131:8123/lovelace/solar?kiosk" OUTPUT_FILE = "/screenshots/debug_screenshot_final.png" HA_TOKEN = os.environ.get("HA_ACCESS_TOKEN") async def main(): if not HA_TOKEN: logging.error("Fehler: Umgebungsvariable HA_ACCESS_TOKEN nicht gefunden!") return logging.info("Starte Puppeteer-Browser mit Ignorieren von HTTPS-Fehlern...") browser = await launch( executablePath='/usr/bin/chromium', headless=True, # === ENTSCHEIDENDE ÄNDERUNG: SSL-Fehler ignorieren === ignoreHTTPSErrors=True, args=[ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage' ] ) page = await browser.newPage() await page.setViewport({'width': 1280, 'height': 1024}) logging.info("Setze Authentifizierungs-Header...") await page.setExtraHTTPHeaders({ 'Authorization': f'Bearer {HA_TOKEN}' }) try: logging.info(f"Navigiere zu URL: {HA_URL}") await page.goto(HA_URL, {'waitUntil': 'networkidle0', 'timeout': 60000}) logging.info("Seite geladen. Warte 10 Sekunden auf das finale Rendering...") await asyncio.sleep(10) logging.info("Erstelle Screenshot...") await page.screenshot({'path': OUTPUT_FILE}) logging.info(f"Screenshot erfolgreich unter {OUTPUT_FILE} gespeichert.") except Exception as e: logging.error(f"Ein Fehler ist aufgetreten: {e}", exc_info=True) logging.info("Speichere trotzdem einen Screenshot des Fehler-Zustands...") await page.screenshot({'path': '/screenshots/debug_error_final.png'}) finally: logging.info("Schließe Browser.") await browser.close() if __name__ == '__main__': # Stellt sicher, dass das Skript auch bei Fehlern nicht sofort abbricht try: asyncio.run(main()) except Exception as e: logging.critical(f"Kritischer Fehler im Hauptprozess: {e}", exc_info=True)