import asyncio from pyppeteer import launch import logging import os # Logging-Konfiguration logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') HA_URL = "http://192.168.178.131:8123/lovelace/solar?kiosk" OUTPUT_FILE = "/screenshots/debug_screenshot.png" HA_TOKEN = os.environ.get("HA_ACCESS_TOKEN") async def main(): logging.info("Starte Puppeteer-Browser...") browser = await launch( executablePath='/usr/bin/chromium', headless=True, args=['--no-sandbox', '--disable-setuid-sandbox'] ) page = await browser.newPage() await page.setViewport({'width': 1280, 'height': 1024}) try: logging.info(f"Navigiere zu URL: {HA_URL}") # Wir erhöhen den Timeout auf 60 Sekunden await page.goto(HA_URL, {'waitUntil': 'networkidle0', 'timeout': 60000}) logging.info("Seite geladen. Warte 10 Sekunden, um Rendering abzuwarten...") 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}") logging.info("Speichere trotzdem einen Screenshot des aktuellen Zustands...") await page.screenshot({'path': '/app/output/debug_error.png'}) finally: logging.info("Schließe Browser.") await browser.close() async def main(): logging.info("Starte Puppeteer-Browser...") browser = await launch( executablePath='/usr/bin/chromium', headless=True, args=['--no-sandbox', '--disable-setuid-sandbox'] ) page = await browser.newPage() await page.setViewport({'width': 1280, 'height': 1024}) # NEU: Authentifizierungs-Header für alle Anfragen dieser Seite setzen if HA_TOKEN: logging.info("Authentifizierungs-Token gefunden. Setze 'Authorization'-Header.") await page.setExtraHTTPHeaders({ 'Authorization': f'Bearer {HA_TOKEN}' }) else: logging.warning("Kein HA_ACCESS_TOKEN gefunden. Versuche unauthentifizierten Zugriff.") 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, um Rendering abzuwarten...") 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}") logging.info("Speichere trotzdem einen Screenshot des aktuellen Zustands...") await page.screenshot({'path': '/screenshots/debug_error.png'}) finally: logging.info("Schließe Browser.") await browser.close()