Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Error/Bug
  4. Cache-Probleme seit sayit v5.1.0

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    105

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    147

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    865

Cache-Probleme seit sayit v5.1.0

Geplant Angeheftet Gesperrt Verschoben Ungelöst Error/Bug
6 Beiträge 2 Kommentatoren 146 Aufrufe 1 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Meister MopperM Online
    Meister MopperM Online
    Meister Mopper
    schrieb am zuletzt editiert von Meister Mopper
    #1

    Ich nutze mehrere Instanzen des sayit-Adapters. Nach dem Update auf v5.1.0 war bei mir die cache-Funktion nicht mehr wirksam.
    Will sagen, wenn ich sie in der Instanz aktiviert hatte,


    a1a210ae-f929-4373-9629-f8c2e2f4bc3f-image.jpeg

    bekam ich ein

    sayit.1	2026-04-01 15:57:52.129	error	Error: ENOENT: no such file or directory, copyfile '/opt/iobroker/iobroker-data/sayit/sayit.1.say.mp3' -> '/opt/iobroker/node_modules/cache/4f6fe0ba62252103436dc55f0a7763fe.mp3'
    

    Das Verzeichnis /opt/iobroker/node_modules/cache gab es bei mir nicht, dann scheiterten die Geräte mit aktiviertem cache.
    Die Geräte, die den cache nicht aktiviert hatten, funktionierten perfekt.

    Wenn die Option "Cache benutzen" bei Chromecast-Geräten aktiviert ist, versucht der Adapter, die generierten MP3-Dateien nach /opt/iobroker/node_modules/cache/ zu kopieren.

    Dieser Ordner existiert oft nicht standardmäßig.

    Der Pfad innerhalb von node_modules ist problematisch, da er wahrscheinlich bei jedem Adapter-Update oder npm install gelöscht wird.

    Das Feld zur manuellen Pfadanpassung ist in der sayit-Instanz für den Typ "Chromecast" nicht editierbar.

    Fehlermeldung im Log:

    Error: ENOENT: no such file or directory, copyfile '/opt/iobroker/iobroker-data/sayit/sayit.1.say.mp3' -> '/opt/iobroker/node_modules/cache/4f6fe0ba62252103436dc55f0a7763fe.mp3'

    Auswirkung:

    Die Sprachausgabe schlägt fehl. Wenn der User den Cache deaktiviert, um den Fehler zu umgehen, entstehen unnötige Kosten bei Cloud-Anbietern (z.B. AWS Polly), da Dateien jedes Mal neu generiert werden müssen.

    Vorschlag:

    Der Standard-Cache-Pfad sollte in das persistente Verzeichnis iobroker-data verlegt werden (z.B. iobroker-data/sayit/cache) oder das Pfad-Eingabefeld muss für alle Gerätetypen im Admin-UI freigeschaltet werden.

    Vorerst habe ich mit einer KI/AI einen Symlink angelegt, der ioBroker den Weg weist.

    Ich habe dazu auch ein Issue beim Adapter angelegt.

    Proxmox und HA - dank KI/AI endlich "blocklyfrei"

    1 Antwort Letzte Antwort
    2
    • bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      Ich habe das gleiche Problem mit "Cache".
      Musste es deaktivieren, dann geht es wieder.


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      Meister MopperM 1 Antwort Letzte Antwort
      0
      • bahnuhrB bahnuhr

        Ich habe das gleiche Problem mit "Cache".
        Musste es deaktivieren, dann geht es wieder.

        Meister MopperM Online
        Meister MopperM Online
        Meister Mopper
        schrieb am zuletzt editiert von
        #3

        @bahnuhr sagte:

        Ich habe das gleiche Problem mit "Cache".
        Musste es deaktivieren, dann geht es wieder.

        Das ist aber nicht im Sinne des Erfinders. Es kostet mehr, weil jeder Aufruf (z. B. AWS) kostet

        Proxmox und HA - dank KI/AI endlich "blocklyfrei"

        bahnuhrB 1 Antwort Letzte Antwort
        0
        • Meister MopperM Meister Mopper

          @bahnuhr sagte:

          Ich habe das gleiche Problem mit "Cache".
          Musste es deaktivieren, dann geht es wieder.

          Das ist aber nicht im Sinne des Erfinders. Es kostet mehr, weil jeder Aufruf (z. B. AWS) kostet

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @Meister-Mopper sagte:

          Das ist aber nicht im Sinne des Erfinders. Es kostet mehr, weil jeder Aufruf (z. B. AWS) kostet

          Das mag sein; das Problem bleibt halt.

          Und die issues beim Adapter werden seit längerem nicht bearbeitet.


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          Meister MopperM 1 Antwort Letzte Antwort
          0
          • bahnuhrB bahnuhr

            @Meister-Mopper sagte:

            Das ist aber nicht im Sinne des Erfinders. Es kostet mehr, weil jeder Aufruf (z. B. AWS) kostet

            Das mag sein; das Problem bleibt halt.

            Und die issues beim Adapter werden seit längerem nicht bearbeitet.

            Meister MopperM Online
            Meister MopperM Online
            Meister Mopper
            schrieb am zuletzt editiert von
            #5

            @bahnuhr sagte:

            Das mag sein; das Problem bleibt halt.

            Oder man legt selbst Hand an, wie im Eingangsthread beschrieben.

            Proxmox und HA - dank KI/AI endlich "blocklyfrei"

            1 Antwort Letzte Antwort
            0
            • Meister MopperM Online
              Meister MopperM Online
              Meister Mopper
              schrieb zuletzt editiert von Meister Mopper
              #6

              Da ioBroker richtigerweise öfter gründlich aufräumt, wird der erforderliche Symlink regelmäßig (ca. einmal am Tag) gelöscht.

              Solang der Adapter aber mit aktiviertem cache nicht funktioniert und somit je nach Konstellation unnötige Kosten verursacht, habe ich mithilfe von KI/AI ein Skript laufen, das stündlich und beim Start des Adapters die Existenz des Symlink prüft und bei Fehlen desselben wieder setzt.

              Hier das Skript:

              /**
               * =============================================================================
               * SCRIPT: SayIt_AutoFix_Persistent.js
               * BESCHREIBUNG: Repariert den flüchtigen Symlink für den SayIt-Cache und
               * konfiguriert alle Instanzen automatisch auf den sicheren Pfad.
               * AUTOMATISIERUNG: Läuft stündlich und bei jedem Skript-Start.
               * =============================================================================
               */
              
              const { exec } = require('child_process');
              
              // --- KONFIGURATION ---
              const SAFE_CACHE_DIR = '/opt/iobroker/iobroker-data/sayit_cache';
              const LINK_PATH = '/opt/iobroker/node_modules/cache';
              const REL_CACHE_PATH = '../../cache/'; // Relativ gesehen vom Adapter-Folder
              
              /**
               * Hilfsfunktion zur Ausführung von Shell-Befehlen (Promise-basiert)
               * @param {string} cmd - Der auszuführende Linux-Befehl
               */
              function runShell(cmd) {
                  return new Promise((resolve, reject) => {
                      exec(cmd, (error, stdout, stderr) => {
                          if (error) {
                              return reject(`Fehler bei [${cmd}]: ${error.message}`);
                          }
                          resolve(stdout ? stdout.trim() : stderr.trim());
                      });
                  });
              }
              
              /**
               * Kernfunktion der Reparatur
               * Prüft den Symlink auf Systemebene und die Config in der Datenbank.
               */
              async function repairSayItSystem() {
                  log('--- SayIt-Check: Starte Überprüfung der Cache-Struktur ---', 'info');
              
                  try {
                      // 1. SYSTEM-EBENE: Ordner und Symlink
                      // Wir stellen sicher, dass der Zielordner existiert
                      await runShell(`mkdir -p ${SAFE_CACHE_DIR}`);
              
                      // Wir prüfen, ob der Symlink korrekt ist
                      // -L prüft auf Symlink, readlink prüft das Ziel
                      let currentLink;
                      try {
                          currentLink = await runShell(`readlink -f ${LINK_PATH}`);
                      } catch (e) {
                          currentLink = 'NOT_FOUND';
                      }
              
                      if (currentLink !== SAFE_CACHE_DIR) {
                          log(`Symlink fehlerhaft oder fehlt (aktuell: ${currentLink}). Repariere...`, 'warn');
              
                          // Alten Pfad/Link radikal entfernen und neu setzen
                          await runShell(`rm -rf ${LINK_PATH}`);
                          await runShell(`ln -s ${SAFE_CACHE_DIR} ${LINK_PATH}`);
              
                          log('Symlink wurde erfolgreich wiederhergestellt.', 'info');
                      } else {
                          log('Symlink in node_modules ist korrekt vorhanden.', 'info');
                      }
              
                      // 2. IOBROKER-EBENE: Instanz-Konfiguration
                      // Wir suchen alle SayIt-Instanz-Objekte
                      const instances = await $(`system.adapter.sayit.*`);
              
                      for (const id of instances) {
                          // Wir filtern nur die Haupt-Instanzen (z.B. system.adapter.sayit.0)
                          if (id.match(/^system\.adapter\.sayit\.\d+$/)) {
                              const obj = await getObjectAsync(id);
              
                              // Nur aktualisieren, wenn Cache aus ist oder der Pfad nicht stimmt
                              if (!obj.native.cache || obj.native.cacheDir !== REL_CACHE_PATH) {
                                  log(`Aktualisiere Konfiguration für ${id}...`, 'info');
                                  await extendObjectAsync(id, {
                                      native: {
                                          cache: true,
                                          cacheDir: REL_CACHE_PATH
                                      }
                                  });
                                  // ioBroker startet die Instanz nach extendObject automatisch neu
                              }
                          }
                      }
              
                      log('--- SayIt-Check: Alles im grünen Bereich ---', 'info');
              
                  } catch (err) {
                      log(`Kritischer Fehler bei SayIt-Reparatur: ${err}`, 'error');
                  }
              }
              
              // --- AUTOMATISIERUNG ---
              
              // 1. Ausführung beim Start des Skripts (oder Neustart des JS-Adapters)
              repairSayItSystem();
              
              // 2. Regelmäßige Ausführung (Schedule)
              // Wir prüfen jede Stunde zur 27. Minute, ob der Link noch da ist.
              schedule("27 * * * *", () => {
                  repairSayItSystem();
              });
              
              

              Vielleicht kann es ja auch jemand gebrauchen.

              Proxmox und HA - dank KI/AI endlich "blocklyfrei"

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              472

              Online

              32.8k

              Benutzer

              82.7k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe