Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. ioBroker Allgemein
  4. [gelöst] ioBroker auf PI4 stürzt immer mal wieder ab

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst] ioBroker auf PI4 stürzt immer mal wieder ab

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
58 Beiträge 7 Kommentatoren 587 Aufrufe 8 Watching
  • Ä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.
  • HomoranH Homoran

    @OliverIO sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

    bei blockly bin ich raus

    @kapitaen31
    dann mach doch bitte für @oliverio auch noch einen Export der Javascript Ansicht (ohne die letzte kilometerlange kryptische Zeile)

    K Offline
    K Offline
    Kapitaen31
    schrieb am zuletzt editiert von
    #48

    @Homoran sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

    @kapitaen31
    dann mach doch bitte für @oliverio auch noch einen Export der Javascript Ansicht (ohne die letzte kilometerlange kryptische Zeile)

    Hier kommt der die JavaScript Ansicht:

    var MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus, MaxZeitplan, MAX_aus, MAX_ein, MAX_Helligkeit, Max_abends_aus, Wartezeit;
    
    // Hue Lampe mit angegebenem Wert langsam einschalten.
    async function Max_dimmen(MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus) {
      if (MAX_ein_aus == 'ein') {
        // Max wird  aufgeblendet (einschalten)
        if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val == 0) {
          setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, 5);
          console.warn('Max eingeschaltet! ');
        }
        setState('alias.0.OG.Flur.Licht.FarbTemperaturHueMax' /* Farb Temp Hue Max */, MAX_Farbwert);
        setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, true, true);
        MAX_ein = setInterval(async () => {
          if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val < MAX_Wert && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == MAX_erreichbar) {
            setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val + 5));
            console.log((String(MAX_Text) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
          } else {
            (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
            setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, MAX_aufdimmen_aktiv, true);
            Wartezeit = setTimeout(async () => {
              Wartezeit = null;
              console.log((String(MAX_Zyklus_beendet) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
            }, 3000);
          }
        }, 30000);
      } else if (MAX_ein_aus == 'aus') {
        // Max wird  abgeblendet (ausgeschalten)
        if (getState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv').val) {
          (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
          (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
          setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, MAX_aufdimmen_aktiv, true);
        }
        MAX_aus = setInterval(async () => {
          if (MAX_Wert == 0) {
            if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val > 6 && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == 1) {
              MAX_Helligkeit = true;
            } else {
              MAX_Helligkeit = false;
            }
          } else {
            if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val > MAX_Wert && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == 1) {
              MAX_Helligkeit = true;
            } else {
              MAX_Helligkeit = false;
            }
          }
          if (MAX_Helligkeit) {
            setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val - 5));
            console.log((String(MAX_Text) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
          } else {
            (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
            setState('alias.0.OG.Flur.Licht.EingeschaltetHueMax' /* Ein Hue Max */, false);
            console.error(MAX_Zyklus_beendet);
          }
        }, 30000);
      }
    }
    
    
    // Hue Max automatisch morgens langsam einschalten
    on({ id: [].concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Wochentag']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Monat']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Datum']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Std']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Min']), change: 'ne' }, async (obj) => {
      (() => { if (MaxZeitplan) { clearSchedule(MaxZeitplan); MaxZeitplan = null; }})();
      MaxZeitplan = schedule(getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Min').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Std').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Datum').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Monat').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Wochentag').val.toString().trim(), async () => {
        console.warn('Neuer Zeitplan wurde für morgens einschalten angelegt.   ');
        if (compareTime(getAstroDate('dawn', undefined, 18), null, '<', null)) {
          console.warn(([(new Date().getTime()),'  ;   ',getAstroDate('dawn', undefined, 18)].join('')));
          (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
          (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
          await Max_dimmen(30, true, false, true, 'Max morgens einschalten +5. Wert:', 'Max Einschalt Zyklus morgens beendet. Wert: ', 2730, 'ein');
        }
      });
    });
    // Hue Max automatisch abends langsam einschalten
    schedule({ astro: 'sunset', shift: 0 }, async () => {
      console.warn('Sonnenuntergang.  ');
      if (compareTime('21:36', 'null', '<')) {
        (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
        (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
        await Max_dimmen(100, 1, false, true, 'Max abends einschalten +5. Wert:', 'Max Einschalt Zyklus abends beendet. Wert: ', 2730, 'ein');
      }
    });
    // Hue Max automatisch abends langsam ausschalten
    on({ id: [].concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_datum_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_min_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_monat_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_std_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_wochentag_abends']), change: 'ne' }, async (obj) => {
      console.warn('Zeitplan MAX abends ausschalten wurde neu angelegt: ');
      (() => { if (Max_abends_aus) { clearSchedule(Max_abends_aus); Max_abends_aus = null; }})();
      Max_abends_aus = schedule(getState('javascript.0.Datenpunkte.Flur.Licht.CRON_min_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_std_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_datum_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_monat_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_wochentag_abends').val.toString().trim(), async () => {
        console.warn('Zeitplan MAX abends ausschalten gestartet: ');
        (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
        (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
        await Max_dimmen(0, 1, false, false, 'Max abends ausschalten -5. Wert:  ', 'Zyklus MAX ausschalten abends beendet!  Wert:  ', 2730, 'aus');
      });
    });
    // Hue Max automatisch morgens langsam ausschalten
    schedule({ astro: 'dawn', shift: 20 }, async () => {
      console.warn('Sonnenaufgang 20min später.');
      (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
      (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
      await Max_dimmen(0, 1, false, false, 'Max morgens ausschalten -5. Wert:  ', 'Zyklus MAX ausschalten morgens beendet!  Wert:  ', 2730, 'aus');
    });
    
    

    Raspberry 4 (Trixie) mit 120GB SSD Bookworm
    Grafana, influxDB2, Hue, Zigbee2MQTT, Shelly,usw.

    OliverIOO 2 Antworten Letzte Antwort
    0
    • Meister MopperM Meister Mopper

      @Kapitaen31 sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

      Was ich gerade komisch finde das der Befehl

      sudo systemctl status argononed

      keine Ausgabe generiert....

      Dann stimmt etwas mit dem Service nicht. Es müsste so ähnlich aussehen:

      thomas@rpifr24:~ $ sudo systemctl status argononed
      ● argononed.service - Argon One Fan and Button Service
           Loaded: loaded (/usr/lib/systemd/system/argononed.service; enabled; preset: enabled)
           Active: active (running) since Tue 2026-01-27 08:00:55 UTC; 3 days ago
       Invocation: 235e1f92daad47fc85a1436fc4a0f835
         Main PID: 1735012 (python3)
            Tasks: 5 (limit: 3919)
              CPU: 20min 18.948s
           CGroup: /system.slice/argononed.service
                   └─1735012 /usr/bin/python3 /etc/argon/argononed.py SERVICE
      
      Notice: journal has been rotated since unit was started, output may be incomplete.
      thomas@rpifr24:~ $
      

      Ich hatte das Problem, dass bei gleicher Konstellation plötzlich der Lüfter permanent max lief.
      Bei mir hat es geholfen, argononed zu deinstallieren und neu zu konfigurieren.
      Offenbar wurde es bei der Umstellung von bookworm auf trixie nicht sauber mitgenommen.

      Jetzt läuft es wieder geschmeidig.

      K Offline
      K Offline
      Kapitaen31
      schrieb am zuletzt editiert von Kapitaen31
      #49

      @Meister-Mopper sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

      Ich hatte das Problem, dass bei gleicher Konstellation plötzlich der Lüfter permanent max lief.
      Bei mir hat es geholfen, argononed zu deinstallieren und neu zu konfigurieren.
      Offenbar wurde es bei der Umstellung von bookworm auf trixie nicht sauber mitgenommen.

      Jetzt läuft es wieder geschmeidig.

      Ich hatte vorhin nochmals die Konfig neu gestartet. Jetzt erhalte ich auch eine Ausgabe:

      PI@PIArgon:~ $ sudo systemctl status argononed
      ● argononed.service - Argon One Fan and Button Service
           Loaded: loaded (/lib/systemd/system/argononed.service; enabled; preset: enabled)
           Active: active (running) since Fri 2026-01-30 20:18:59 CET; 8min ago
         Main PID: 864 (python3)
            Tasks: 3 (limit: 3913)
              CPU: 106ms
           CGroup: /system.slice/argononed.service
                   └─864 /usr/bin/python3 /etc/argon/argononed.py SERVICE
      
      Jan 30 20:18:59 PIArgon systemd[1]: Started argononed.service - Argon One Fan and Button Service.
      

      Ich hatte den PI auch nochmal neu gestartet.


      Raspberry 4 (Trixie) mit 120GB SSD Bookworm
      Grafana, influxDB2, Hue, Zigbee2MQTT, Shelly,usw.

      1 Antwort Letzte Antwort
      0
      • K Kapitaen31

        @Homoran sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

        @kapitaen31
        dann mach doch bitte für @oliverio auch noch einen Export der Javascript Ansicht (ohne die letzte kilometerlange kryptische Zeile)

        Hier kommt der die JavaScript Ansicht:

        var MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus, MaxZeitplan, MAX_aus, MAX_ein, MAX_Helligkeit, Max_abends_aus, Wartezeit;
        
        // Hue Lampe mit angegebenem Wert langsam einschalten.
        async function Max_dimmen(MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus) {
          if (MAX_ein_aus == 'ein') {
            // Max wird  aufgeblendet (einschalten)
            if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val == 0) {
              setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, 5);
              console.warn('Max eingeschaltet! ');
            }
            setState('alias.0.OG.Flur.Licht.FarbTemperaturHueMax' /* Farb Temp Hue Max */, MAX_Farbwert);
            setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, true, true);
            MAX_ein = setInterval(async () => {
              if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val < MAX_Wert && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == MAX_erreichbar) {
                setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val + 5));
                console.log((String(MAX_Text) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
              } else {
                (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
                setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, MAX_aufdimmen_aktiv, true);
                Wartezeit = setTimeout(async () => {
                  Wartezeit = null;
                  console.log((String(MAX_Zyklus_beendet) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
                }, 3000);
              }
            }, 30000);
          } else if (MAX_ein_aus == 'aus') {
            // Max wird  abgeblendet (ausgeschalten)
            if (getState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv').val) {
              (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
              (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
              setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, MAX_aufdimmen_aktiv, true);
            }
            MAX_aus = setInterval(async () => {
              if (MAX_Wert == 0) {
                if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val > 6 && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == 1) {
                  MAX_Helligkeit = true;
                } else {
                  MAX_Helligkeit = false;
                }
              } else {
                if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val > MAX_Wert && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == 1) {
                  MAX_Helligkeit = true;
                } else {
                  MAX_Helligkeit = false;
                }
              }
              if (MAX_Helligkeit) {
                setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val - 5));
                console.log((String(MAX_Text) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
              } else {
                (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
                setState('alias.0.OG.Flur.Licht.EingeschaltetHueMax' /* Ein Hue Max */, false);
                console.error(MAX_Zyklus_beendet);
              }
            }, 30000);
          }
        }
        
        
        // Hue Max automatisch morgens langsam einschalten
        on({ id: [].concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Wochentag']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Monat']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Datum']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Std']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Min']), change: 'ne' }, async (obj) => {
          (() => { if (MaxZeitplan) { clearSchedule(MaxZeitplan); MaxZeitplan = null; }})();
          MaxZeitplan = schedule(getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Min').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Std').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Datum').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Monat').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Wochentag').val.toString().trim(), async () => {
            console.warn('Neuer Zeitplan wurde für morgens einschalten angelegt.   ');
            if (compareTime(getAstroDate('dawn', undefined, 18), null, '<', null)) {
              console.warn(([(new Date().getTime()),'  ;   ',getAstroDate('dawn', undefined, 18)].join('')));
              (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
              (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
              await Max_dimmen(30, true, false, true, 'Max morgens einschalten +5. Wert:', 'Max Einschalt Zyklus morgens beendet. Wert: ', 2730, 'ein');
            }
          });
        });
        // Hue Max automatisch abends langsam einschalten
        schedule({ astro: 'sunset', shift: 0 }, async () => {
          console.warn('Sonnenuntergang.  ');
          if (compareTime('21:36', 'null', '<')) {
            (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
            (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
            await Max_dimmen(100, 1, false, true, 'Max abends einschalten +5. Wert:', 'Max Einschalt Zyklus abends beendet. Wert: ', 2730, 'ein');
          }
        });
        // Hue Max automatisch abends langsam ausschalten
        on({ id: [].concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_datum_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_min_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_monat_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_std_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_wochentag_abends']), change: 'ne' }, async (obj) => {
          console.warn('Zeitplan MAX abends ausschalten wurde neu angelegt: ');
          (() => { if (Max_abends_aus) { clearSchedule(Max_abends_aus); Max_abends_aus = null; }})();
          Max_abends_aus = schedule(getState('javascript.0.Datenpunkte.Flur.Licht.CRON_min_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_std_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_datum_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_monat_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_wochentag_abends').val.toString().trim(), async () => {
            console.warn('Zeitplan MAX abends ausschalten gestartet: ');
            (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
            (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
            await Max_dimmen(0, 1, false, false, 'Max abends ausschalten -5. Wert:  ', 'Zyklus MAX ausschalten abends beendet!  Wert:  ', 2730, 'aus');
          });
        });
        // Hue Max automatisch morgens langsam ausschalten
        schedule({ astro: 'dawn', shift: 20 }, async () => {
          console.warn('Sonnenaufgang 20min später.');
          (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
          (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
          await Max_dimmen(0, 1, false, false, 'Max morgens ausschalten -5. Wert:  ', 'Zyklus MAX ausschalten morgens beendet!  Wert:  ', 2730, 'aus');
        });
        
        
        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #50

        @Kapitaen31 sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

        läuft bei dir auf dem raspi auch ein browser mit?
        ansonsten ist das beschriebene problem wahrscheinlich nicht relevant, sollte aber auch behoben werden.
        also 1) mit "vermüllen" ist gemeint, das da ein memory leak ist. d.h. da wird immer wieder speicher reserviert, der erst du neustart oder im browser mit neuladen behoben werden kann. solange genügend speicher da ist, kein problem, evtl hast du da auch noch nie was gemerkt, sollte aber behoben werden. weiß0 nicht wie safe da blockly ist.

        ich habe das skript mal bei gemini reingeworfen (chatgpt geht gerade nicht)


        Das sieht nach einem klassischen Blockly-Export für den ioBroker JavaScript-Adapter aus. Das Skript ist funktional, hat aber ein paar „Stolperfallen“, die im Alltag zu Problemen führen können (besonders beim Dimmen und den Zeitplänen).

        Hier sind die kritischen Punkte, die ich gefunden habe:

        1. Die "Erreichbarkeit"-Prüfung (MAX_erreichbar)

        In der Funktion Max_dimmen fragst du den Status Erreichbar Hue Max ab.

        • Das Problem: Wenn die Lampe über den Wandschalter stromlos gemacht wurde, ist sie "nicht erreichbar". Das Intervall läuft dann aber ewig weiter, weil die Bedingung getState(...).val == MAX_erreichbar nie erfüllt wird, aber auch kein else greift, das das Intervall stoppt.
        • Folge: Das Skript "vermüllt" den Speicher mit laufenden Intervallen im Hintergrund.

        2. Fehlende Initialisierung beim Neustart

        Die Variable MaxZeitplan und Max_abends_aus werden erst gesetzt, wenn sich einer der CRON-Datenpunkte ändert (change: 'ne').

        • Das Problem: Wenn du das Skript oder den ioBroker neu startest, sind diese Zeitpläne nicht aktiv, bis du die Werte in den Datenpunkten einmal manuell änderst.
        • Lösung: Du solltest die schedule-Logik am Ende des Skripts einmal ohne Trigger aufrufen, damit sie beim Start sofort registriert wird.

        3. Logik-Fehler beim "Abdimmen_aktiv"

        Im else if (MAX_ein_aus == 'aus')-Teil setzt du:
        setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv', MAX_aufdimmen_aktiv, true);

        • Das Problem: Du übergibst hier die Variable MAX_aufdimmen_aktiv. In deinem morgendlichen Ausschalt-Trigger ist dieser Wert aber auf false gesetzt. Das ist zwar technisch nicht falsch, aber die Variable heißt im Datenpunkt "Abdimmen_aktiv", was verwirrend sein kann, wenn sie beim Ausschalten auf false geht, obwohl der Prozess noch läuft.

        4. Die compareTime bei Sonnenuntergang

        if (compareTime('21:36', 'null', '<'))
        
        
        • Das Problem: Das bedeutet: "Führe das Dimmen nur aus, wenn es vor 21:36 Uhr ist". Da der Sonnenuntergang im Sommer aber auch mal nach 21:36 Uhr sein kann, würde die Lampe an manchen Tagen im Jahr einfach gar nicht angehen. Prüfe, ob das so gewollt ist.

        5. Intervall-Dauer vs. Schrittweite

        Du dimmst alle 30 Sekunden um 5 Einheiten.

        • Um von 0 auf 100 zu kommen, braucht das Skript 20 Schritte.
        • (10 Minuten).
        • Gefahr: Wenn während dieser 10 Minuten jemand manuell das Licht schaltet oder ein anderer Trigger feuert, kommen sich die Intervalle in die Quere, falls MAX_ein / MAX_aus nicht sauber gelöscht werden.

        Zusammenfassung & Empfehlung

        Fehlerquelle Auswirkung Lösung
        Erreichbarkeit Endlosschleife im Hintergrund Ein else { clearInterval... } hinzufügen, falls Lampe offline.
        Startverhalten Zeitpläne nach Neustart inaktiv Trigger-Logik einmal beim Skriptstart ausführen.
        Variablen-Mix MAX_erreichbar wird mal als true (Boolean) und mal als 1 (Zahl) übergeben. JavaScript ist da tolerant, aber sauberer wäre es, immer den gleichen Typ zu nutzen.

        Ein kleiner Tipp für ioBroker:
        Anstatt Intervalle mit setInterval zu bauen, nutzen viele für Hue-Lampen das native transition (Übergangszeit) Kommando. Man kann beim setState einer Hue-Lampe oft ein JSON mitgeben: setState('id', {val: 100, ack: false, transition: 600}). Das würde die Lampe von alleine über 10 Minuten dimmen, ohne dass das Skript alle 30 Sekunden funken muss.

        Soll ich dir zeigen, wie du den Teil für den automatischen Start nach einem Neustart ergänzt?

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        K 1 Antwort Letzte Antwort
        1
        • K Kapitaen31

          @Homoran sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

          @kapitaen31
          dann mach doch bitte für @oliverio auch noch einen Export der Javascript Ansicht (ohne die letzte kilometerlange kryptische Zeile)

          Hier kommt der die JavaScript Ansicht:

          var MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus, MaxZeitplan, MAX_aus, MAX_ein, MAX_Helligkeit, Max_abends_aus, Wartezeit;
          
          // Hue Lampe mit angegebenem Wert langsam einschalten.
          async function Max_dimmen(MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus) {
            if (MAX_ein_aus == 'ein') {
              // Max wird  aufgeblendet (einschalten)
              if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val == 0) {
                setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, 5);
                console.warn('Max eingeschaltet! ');
              }
              setState('alias.0.OG.Flur.Licht.FarbTemperaturHueMax' /* Farb Temp Hue Max */, MAX_Farbwert);
              setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, true, true);
              MAX_ein = setInterval(async () => {
                if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val < MAX_Wert && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == MAX_erreichbar) {
                  setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val + 5));
                  console.log((String(MAX_Text) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
                } else {
                  (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
                  setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, MAX_aufdimmen_aktiv, true);
                  Wartezeit = setTimeout(async () => {
                    Wartezeit = null;
                    console.log((String(MAX_Zyklus_beendet) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
                  }, 3000);
                }
              }, 30000);
            } else if (MAX_ein_aus == 'aus') {
              // Max wird  abgeblendet (ausgeschalten)
              if (getState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv').val) {
                (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
                (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
                setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv' /* Aufdimmen aktiv */, MAX_aufdimmen_aktiv, true);
              }
              MAX_aus = setInterval(async () => {
                if (MAX_Wert == 0) {
                  if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val > 6 && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == 1) {
                    MAX_Helligkeit = true;
                  } else {
                    MAX_Helligkeit = false;
                  }
                } else {
                  if (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val > MAX_Wert && getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == 1) {
                    MAX_Helligkeit = true;
                  } else {
                    MAX_Helligkeit = false;
                  }
                }
                if (MAX_Helligkeit) {
                  setState('alias.0.OG.Flur.Licht.HelligkeitHueMax' /* Helligkeit Hue Max */, (getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val - 5));
                  console.log((String(MAX_Text) + String(getState('alias.0.OG.Flur.Licht.HelligkeitHueMax').val)));
                } else {
                  (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
                  setState('alias.0.OG.Flur.Licht.EingeschaltetHueMax' /* Ein Hue Max */, false);
                  console.error(MAX_Zyklus_beendet);
                }
              }, 30000);
            }
          }
          
          
          // Hue Max automatisch morgens langsam einschalten
          on({ id: [].concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Wochentag']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Monat']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Datum']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Std']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_Min']), change: 'ne' }, async (obj) => {
            (() => { if (MaxZeitplan) { clearSchedule(MaxZeitplan); MaxZeitplan = null; }})();
            MaxZeitplan = schedule(getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Min').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Std').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Datum').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Monat').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_Wochentag').val.toString().trim(), async () => {
              console.warn('Neuer Zeitplan wurde für morgens einschalten angelegt.   ');
              if (compareTime(getAstroDate('dawn', undefined, 18), null, '<', null)) {
                console.warn(([(new Date().getTime()),'  ;   ',getAstroDate('dawn', undefined, 18)].join('')));
                (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
                (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
                await Max_dimmen(30, true, false, true, 'Max morgens einschalten +5. Wert:', 'Max Einschalt Zyklus morgens beendet. Wert: ', 2730, 'ein');
              }
            });
          });
          // Hue Max automatisch abends langsam einschalten
          schedule({ astro: 'sunset', shift: 0 }, async () => {
            console.warn('Sonnenuntergang.  ');
            if (compareTime('21:36', 'null', '<')) {
              (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
              (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
              await Max_dimmen(100, 1, false, true, 'Max abends einschalten +5. Wert:', 'Max Einschalt Zyklus abends beendet. Wert: ', 2730, 'ein');
            }
          });
          // Hue Max automatisch abends langsam ausschalten
          on({ id: [].concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_datum_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_min_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_monat_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_std_abends']).concat(['javascript.0.Datenpunkte.Flur.Licht.CRON_wochentag_abends']), change: 'ne' }, async (obj) => {
            console.warn('Zeitplan MAX abends ausschalten wurde neu angelegt: ');
            (() => { if (Max_abends_aus) { clearSchedule(Max_abends_aus); Max_abends_aus = null; }})();
            Max_abends_aus = schedule(getState('javascript.0.Datenpunkte.Flur.Licht.CRON_min_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_std_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_datum_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_monat_abends').val.toString().trim() + ' ' + getState('javascript.0.Datenpunkte.Flur.Licht.CRON_wochentag_abends').val.toString().trim(), async () => {
              console.warn('Zeitplan MAX abends ausschalten gestartet: ');
              (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
              (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
              await Max_dimmen(0, 1, false, false, 'Max abends ausschalten -5. Wert:  ', 'Zyklus MAX ausschalten abends beendet!  Wert:  ', 2730, 'aus');
            });
          });
          // Hue Max automatisch morgens langsam ausschalten
          schedule({ astro: 'dawn', shift: 20 }, async () => {
            console.warn('Sonnenaufgang 20min später.');
            (() => { if (MAX_aus) { clearInterval(MAX_aus); MAX_aus = null; }})();
            (() => { if (MAX_ein) { clearInterval(MAX_ein); MAX_ein = null; }})();
            await Max_dimmen(0, 1, false, false, 'Max morgens ausschalten -5. Wert:  ', 'Zyklus MAX ausschalten morgens beendet!  Wert:  ', 2730, 'aus');
          });
          
          
          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #51

          @Kapitaen31

          zum vergleichmal noch chatgpt 5.2
          sag mal welche ausgabe du besser findest bzw was dir mehr geholfen hat.


          Ja – da sind ein paar echte „Blockly-Export“-Klassiker drin, die dir in ioBroker früher oder später Probleme machen (oder dafür sorgen, dass es nicht so läuft wie gedacht). Ich gehe die auffälligsten Punkte durch und sage jeweils warum das problematisch ist und wie du’s robust bekommst.


          1) Parameter-Chaos vs. globale Variablen (und dadurch Logikfehler)

          Max_dimmen() hat diese Signatur:

          async function Max_dimmen(MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus)
          

          Du rufst sie z.B. morgens so auf:

          await Max_dimmen(30, true, false, true, ..., 2730, 'ein');
          

          Aber im Code vergleichst du später:

          getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == MAX_erreichbar
          

          Und im Aufruf gibst du einmal true, einmal 1 (abends: Max_dimmen(100, 1, ...)).

          ➡️ Wenn der State ...Erreichbar Hue Max bei dir ein Zahl-Boolean ist (0/1), dann ist der Vergleich mit true zwar mit == oft „zufällig“ wahr (weil true == 1), aber das ist fragil. Wenn der State mal "true" oder true liefert, oder du auf === umstellst, knallt’s.

          Robust fix: Normalisieren statt „magischen“ Typen:

          const reachable = !!getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val;
          if (reachable === !!MAX_erreichbar) { ... }
          

          Oder konsequent immer 1/0 verwenden.


          2) MAX_aufdimmen wird nie verwendet

          Du übergibst MAX_aufdimmen, aber im Code taucht die Variable nirgendwo sinnvoll auf (sie wird nicht gelesen). Das ist kein Crash, aber ein Hinweis: Blockly hat dir Paramater reingezogen, die du gar nicht brauchst.

          ➡️ Ergebnis: schwer wartbar, und du glaubst evtl. „das beeinflusst was“, tut es aber nicht.


          3) Falsche/inkonsistente Nutzung von compareTime()

          Du hast mehrere Varianten:

          a) Morgens:

          if (compareTime(getAstroDate('dawn', undefined, 18), null, '<', null)) {
          

          Das sieht aus wie Blockly-„Compare Time“ in der 4-Argument-Variante. Kann funktionieren, ist aber seltsam (null/null).

          b) Abends:

          if (compareTime('21:36', 'null', '<')) {
          

          Hier ist 'null' ein String, nicht null.

          ➡️ Das ist sehr wahrscheinlich ein Fehler. Je nach Implementierung von compareTime ist 'null' ein ungültiger Zeitpunkt und die Funktion liefert dann immer false oder verhält sich unerwartet.

          Vermutlich wolltest du: „wenn aktuelle Zeit < 21:36“ oder „wenn 21:36 < aktuelle Zeit“. Dafür ist die typische Blockly-Semantik:

          • compareTime('21:36', null, '<') → vergleicht '21:36' mit jetzt
          • oder compareTime(null, '21:36', '<') je nach Variante

          Konkreter Verdacht: Dein Abend-Einschalten läuft evtl. nie, weil der Vergleich falsch ist.


          4) Du setzt „EingeschaltetHueMax“ nur beim Ausschalten – aber nicht beim Einschalten

          Beim Dimmen „ein“ setzt du:

          • Helligkeit ggf. auf 5
          • Farbtemperatur
          • Abdimm-aktiv true
          • und erhöhst Helligkeit

          Beim Dimmen „aus“ machst du am Ende:

          setState('alias.0.OG.Flur.Licht.EingeschaltetHueMax', false);
          

          ➡️ Aber beim Einschalten setzt du EingeschaltetHueMax nicht auf true. Wenn andere Logik oder Visualisierung davon abhängt, ist das inkonsistent.


          5) Race-Conditions / parallele Intervalle: nicht konsequent gestoppt

          Du stoppst Intervalle zwar oft, aber nicht überall:

          • Beim Start von Max_dimmen('ein') stoppst du nicht automatisch ein evtl. laufendes MAX_ein oder MAX_aus (nur in den Schedules machst du das davor).
          • Im aus-Zweig stoppst du nur dann sofort, wenn Abdimmen_aktiv true ist:
          if (getState('...Abdimmen_aktiv').val) {
            clearInterval(MAX_ein); clearInterval(MAX_aus);
          }
          

          ➡️ Wenn Abdimmen_aktiv aus irgendeinem Grund false ist, können alte Intervalle weiterlaufen und du startest zusätzlich MAX_aus. Dann schreiben zwei Timer gegeneinander.

          Robust fix: Immer am Anfang von Max_dimmen() beide Intervalle killen, unabhängig vom Flag.


          6) setInterval(async () => { ... }) – async im Interval ohne Nutzen

          Du nutzt async in den Interval-Callbacks, aber du await-est da drin praktisch nichts (außer in setTimeout, was auch ohne async geht).

          ➡️ Kein direkter Fehler, aber: falls du später await einbaust, kann es passieren, dass ein neuer Interval-Tick startet, bevor der alte fertig ist (Überlappung). Besser: kein async im setInterval oder einen „Lock“ setzen.


          7) Schwellenwerte beim Ausschalten: mögliche Endlosschleife / nie ganz aus

          Im Ausblend-Zweig:

          if (MAX_Wert == 0) {
            if (helligkeit > 6) MAX_Helligkeit = true; else false;
          }
          ...
          if (MAX_Helligkeit) helligkeit -= 5
          else stop + ausgeschaltet=false
          

          ➡️ Du dimmst runter bis <= 6, dann stoppst du und setzt EingeschaltetHueMax=false. Aber du setzt die Helligkeit nicht auf 0. D.h. sie kann bei 6 stehen bleiben.

          • Wenn dein Gerät bei 6 noch sichtbar leuchtet: bleibt an.
          • Wenn du später „ein“ startest, hast du nicht „aus=0“ als Ausgangslage.

          Wenn du wirklich „aus“ willst, setz beim Ende explizit auf 0.


          8) Doppelbelegung / uneindeutige Zustände: „Abdimmen_aktiv“

          Du setzt:

          • beim Einschalten: Abdimmen_aktiv erst auf true, später auf MAX_aufdimmen_aktiv (bei dir meist false)
          • beim Ausschalten: setzt du es auf MAX_aufdimmen_aktiv

          ➡️ Der Name passt nicht: du nutzt es als „läuft gerade ein Dimmer-Zyklus“ (lock), aber setzt es am Ende auf einen Parameterwert, der in deinen Aufrufen immer false ist. Das ist okay, aber dann brauchst du keinen Parameter dafür.


          9) Cron-Strings aus States: Gefahr von „kaputtem Cron“ ohne Validierung

          Du baust Cron so:

          min + ' ' + std + ' ' + datum + ' ' + monat + ' ' + wochentag
          

          Wenn einer der States leer ist oder * falsch gesetzt wird, erzeugst du einen ungültigen Cron und schedule() kann still scheitern oder Exceptions werfen.

          ➡️ Blockly macht das gern, aber produktiv solltest du mindestens loggen, welcher Cron konkret gesetzt wurde und ob schedule() eine ID zurückgab.


          10) Kleinigkeiten, aber echte Wartungsbremsen

          • Sehr viele globale Variablen, die eigentlich nur Timer-Handles sind (MAX_ein, MAX_aus, Wartezeit).
          • MAX_Wert == 0 vs === – mit .val aus ioBroker kann auch string kommen. Dann ist == wieder „zufällig“ korrekt.

          Was ich konkret als „Minimal-Fix“ empfehlen würde (ohne alles umzubauen)

          1. Am Anfang von Max_dimmen immer alles stoppen:
          • clearInterval(MAX_ein), clearInterval(MAX_aus), optional clearTimeout(Wartezeit)
          1. Erreichbar immer booleanisieren
          • const reachable = !!getState(...).val;
          • und MAX_erreichbar ebenfalls !!MAX_erreichbar
          1. compareTime('21:36', 'null', '<') korrigieren
          • sehr wahrscheinlich muss 'null' → null (ohne Quotes) oder die Argumente anders.
          1. Beim Ausschalt-Ende Helligkeit auf 0 setzen
          • setState(...Helligkeit..., 0);
          1. Optional: EingeschaltetHueMax beim Einschalten auf true.

          Wenn du willst, kann ich dir als nächsten Schritt eine bereinigte Version 1:1 auf Basis deines Codes posten (gleiches Verhalten, aber mit den oben genannten Fixes, weniger Parametern, sauberem Timer-Handling). Ich würde dafür nur kurz wissen:

          • Liefert alias.0.OG.Flur.Licht.Erreichbar Hue Max bei dir 0/1 oder true/false?
          • Soll „aus“ wirklich auf 0 gehen oder bewusst bei 6 stoppen?

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          K 1 Antwort Letzte Antwort
          0
          • K Kapitaen31

            Jetzt habe ich noch den iob fix durchlaufen lassen.
            Hier die diag Ausgabe:

            Script v.2025-08-09
            
            *** BASE SYSTEM ***
            Operating System: Debian GNU/Linux 12 (bookworm)
             Static hostname: PIArgon
                   Icon name: computer
                      Kernel: Linux 6.12.62+rpt-rpi-v8
                Architecture: arm64
            OS is similar to:
            
            Model           : Raspberry Pi 4 Model B Rev 1.5
            Docker          : false
            Virtualization  : none
            Kernel          : aarch64
            Userland        : 64 bit
            
            Systemuptime and Load:
             17:25:14 up 39 min,  2 users,  load average: 4.97, 2.40, 1.43
            CPU threads: 4
            
            
            *** LIFE CYCLE STATUS ***
            Debian 'bookworm' is the current oldstable version. Please upgrade to the latest stable release 'trixie' in due time!
            
            *** RASPBERRY THROTTLING ***
            Current issues:
            No throttling issues detected.
            
            Previously detected issues:
            No throttling issues detected.
            
            *** TIME AND TIMEZONES ***
                           Local time: Wed 2026-01-28 17:25:14 CET
                       Universal time: Wed 2026-01-28 16:25:14 UTC
                             RTC time: n/a
                            Time zone: Europe/Berlin (CET, +0100)
            System clock synchronized: yes
                          NTP service: active
                      RTC in local TZ: no
            
            *** Users and Groups ***
            User that called 'iob diag':
            PI
            HOME=/home/PI
            GROUPS=PI adm dialout cdrom sudo audio video plugdev games users input render netdev gpio i2c spi iobroker
            
            User that is running 'js-controller':
            iobroker
            HOME=/home/iobroker
            GROUPS=iobroker tty dialout audio video plugdev bluetooth gpio i2c
            
            *** DISPLAY-SERVER SETUP ***
            Display-Server:         false
            Unit display-manager.service could not be found.
            Display-Manager:
            Desktop:
            Session:                tty
            
            *** MEMORY ***
                           total        used        free      shared  buff/cache   available
            Mem:            4.0G        2.6G         90M        245K        1.4G        1.4G
            Swap:           209M        136M         73M
            Total:          4.2G        2.7G        164M
            
            Active iob-Instances:   4
            
                     3789 M total memory
                     2453 M used memory
                     2366 M active memory
                      967 M inactive memory
                       86 M free memory
                      119 M buffer memory
                     1206 M swap cache
                      199 M total swap
                      129 M used swap
                       70 M free swap
            
            *** top - Table Of Processes  ***
            top - 17:25:15 up 39 min,  2 users,  load average: 4.97, 2.40, 1.43
            Tasks: 203 total,   6 running, 197 sleeping,   0 stopped,   0 zombie
            %Cpu(s): 66.7 us,  0.0 sy,  0.0 ni, 22.2 id, 11.1 wa,  0.0 hi,  0.0 si,  0.0 st
            MiB Mem :   3789.8 total,     85.8 free,   2453.7 used,   1326.3 buff/cache
            MiB Swap:    200.0 total,     70.0 free,    130.0 used.   1336.1 avail Mem
            
            *** FAILED SERVICES ***
            
              UNIT LOAD ACTIVE SUB DESCRIPTION
            0 loaded units listed.
            
            
            *** DMESG CRITICAL ERRORS ***
            No critical errors detected
            
            *** FILESYSTEM ***
            Filesystem     Type      Size  Used Avail Use% Mounted on
            udev           devtmpfs  1.6G     0  1.6G   0% /dev
            tmpfs          tmpfs     758M  1.2M  757M   1% /run
            /dev/sda2      ext4      110G   22G   83G  21% /
            tmpfs          tmpfs     1.9G     0  1.9G   0% /dev/shm
            tmpfs          tmpfs     5.0M   16K  5.0M   1% /run/lock
            /dev/sda1      vfat      510M   66M  445M  13% /boot/firmware
            tmpfs          tmpfs     379M     0  379M   0% /run/user/1000
            
            Messages concerning ext4 filesystem in dmesg:
            [Wed Jan 28 16:45:32 2026] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave nvme.max_host_mem_size_mb=0 snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_hdmi=0  numa=fake=1 system_heap.max_order=0 smsc95xx.macaddr=E4:5F:01:FE:0B:37 vc_mem.mem_base=0x3eb00000 vc_mem.mem_size=0x3ff00000  console=ttyS0,115200 console=tty1 root=PARTUUID=9afaab09-02 rootfstype=ext4 fsck.repair=yes rootwait cfg80211.ieee80211_regdom=DE
            [Wed Jan 28 16:45:36 2026] EXT4-fs (sda2): mounted filesystem 3b614a3f-4a65-4480-876a-8a998e01ac9b ro with ordered data mode. Quota mode: none.
            [Wed Jan 28 16:45:43 2026] EXT4-fs (sda2): re-mounted 3b614a3f-4a65-4480-876a-8a998e01ac9b r/w.
            
            Show mounted filesystems:
            TARGET           SOURCE    FSTYPE OPTIONS
            /                /dev/sda2 ext4   rw,noatime
            `-/boot/firmware /dev/sda1 vfat   rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro
            
            Files in neuralgic directories:
            
            /var:
            4.1G    /var/
            1.9G    /var/log/journal/3a228e6261a14b389cf6e2129be3286a
            1.9G    /var/log/journal
            1.9G    /var/log
            1.2G    /var/lib
            
            Archived and active journals take up 1.8G in the file system.
            
            /opt/iobroker/backups:
            9.8G    /opt/iobroker/backups/
            
            /opt/iobroker/iobroker-data:
            415M    /opt/iobroker/iobroker-data/
            326M    /opt/iobroker/iobroker-data/files
            78M     /opt/iobroker/iobroker-data/files/icons-open-icon-library-png
            71M     /opt/iobroker/iobroker-data/backup-objects
            47M     /opt/iobroker/iobroker-data/files/admin.admin
            
            The five largest files in iobroker-data are:
            27M     /opt/iobroker/iobroker-data/files/tankerkoenig.admin/build/index.js.map
            15M     /opt/iobroker/iobroker-data/objects.jsonl
            9.2M    /opt/iobroker/iobroker-data/files/tankerkoenig.admin/build/index.js
            8.1M    /opt/iobroker/iobroker-data/files/backitup.admin/assets/index-Djx0nwYT.js
            4.6M    /opt/iobroker/iobroker-data/files/javascript.admin/vs/language/typescript/tsWorker.js
            
            USB-Devices by-id:
            USB-Sticks -  Avoid direct links to /dev/tty* in your adapter setups, please always prefer the links 'by-id':
            
            No Devices found 'by-id'
            
            Zigbee Network Settings on your coordinator/in nvbackup are:
            
            zigbee.X
            Extended Pan ID:
            *** MASKED ***
            Pan ID:
            *** MASKED ***
            Channel:
            *** MASKED ***
            Network Key:
            *** MASKED ***
            
            To unmask the settings run 'iob diag --unmask'
            
            
            *** NodeJS-Installation ***
            
            /usr/bin/nodejs         v22.22.0
            /usr/bin/node           v22.22.0
            /usr/bin/npm            10.9.4
            /usr/bin/npx            10.9.4
            /usr/bin/corepack       0.34.0
            
            nodejs:
              Installed: 22.22.0-1nodesource1
              Candidate: 22.22.0-1nodesource1
              Version table:
             *** 22.22.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                    100 /var/lib/dpkg/status
                 22.21.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.20.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.19.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.18.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.17.1-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.17.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.16.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.15.1-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.15.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.14.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.13.1-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.13.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.12.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.11.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.10.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.9.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.8.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.7.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.6.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.5.1-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.5.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.4.1-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.4.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.3.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.2.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.1.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 22.0.0-1nodesource1 1001
                    500 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages
                 18.20.4+dfsg-1~deb12u1 500
                    500 http://deb.debian.org/debian bookworm/main arm64 Packages
                    500 http://deb.debian.org/debian-security bookworm-security/main arm64 Packages
            
            Temp directories causing deletion problem: 0
            No problems detected
            
            Errors in npm tree: 0
            No problems detected
            
            Checking for nodejs vulnerability:
            
            
             █████  ██      ██           ██████   ██████   ██████  ██████         ██
            ██   ██ ██      ██          ██       ██    ██ ██    ██ ██   ██     ██  ██
            ███████ ██      ██          ██   ███ ██    ██ ██    ██ ██   ██         ██
            ██   ██ ██      ██          ██    ██ ██    ██ ██    ██ ██   ██     ██  ██
            ██   ██ ███████ ███████      ██████   ██████   ██████  ██████         ██
            
            
            
            *** ioBroker-Installation ***
            
            ioBroker Status
            iobroker is running on this host.
            
            
            Objects type: jsonl
            States  type: jsonl
            
            Hosts:
            PIArgon             PIArgon (version: 7.0.7, hostname: PIArgon       , alive, uptime: 112)
            
            Core adapters versions
            js-controller:  7.0.7
            admin:          7.7.22
            javascript:     9.0.11
            
            nodejs modules from github:     1
            +-- iobroker.apsystems-ecu@0.2.9 (git+ssh://git@github.com/npeter/iobroker.apsystems-ecu.git#c737ed3ce633041d6adb0494830458a2676c8062)
            
            Adapter State
            + system.adapter.admin.0                  : admin                 : PIArgon                                  -  enabled, port: 8081, bind: 0.0.0.0, run as: admin
              system.adapter.alias-manager.0          : alias-manager         : PIArgon                                  - disabled
              system.adapter.apsystems-ecu.0          : apsystems-ecu         : PIArgon                                  -  enabled
              system.adapter.backitup.0               : backitup              : PIArgon                                  -  enabled
              system.adapter.daswetter.0              : daswetter             : PIArgon                                  -  enabled
              system.adapter.discovery.0              : discovery             : PIArgon                                  -  enabled
              system.adapter.dwd.0                    : dwd                   : PIArgon                                  -  enabled
              system.adapter.flot.0                   : flot                  : PIArgon                                  - disabled
              system.adapter.fritzdect.0              : fritzdect             : PIArgon                                  -  enabled
            + system.adapter.history.0                : history               : PIArgon                                  -  enabled
              system.adapter.hue.0                    : hue                   : PIArgon                                  -  enabled, port: 443
              system.adapter.icons-icons8.0           : icons-icons8          : PIArgon                                  - disabled
              system.adapter.icons-mfd-svg.0          : icons-mfd-svg         : PIArgon                                  -  enabled
              system.adapter.icons-open-icon-library-png.0: icons-open-icon-library-png: PIArgon                                  - disabled
            + system.adapter.influxdb.0               : influxdb              : PIArgon                                  -  enabled, port: 8086
              system.adapter.javascript.0             : javascript            : PIArgon                                  -  enabled
              system.adapter.lovelace.0               : lovelace              : PIArgon                                  -  enabled, port: 8091, bind: 0.0.0.0, run as: admin
              system.adapter.mqtt.0                   : mqtt                  : PIArgon                                  -  enabled, port: 1886, bind: 0.0.0.0
              system.adapter.nina.0                   : nina                  : PIArgon                                  -  enabled
              system.adapter.pollenflug.0             : pollenflug            : PIArgon                                  -  enabled
              system.adapter.pushover.0               : pushover              : PIArgon                                  -  enabled
              system.adapter.pvforecast.0             : pvforecast            : PIArgon                                  -  enabled
              system.adapter.radar2.0                 : radar2                : PIArgon                                  -  enabled
              system.adapter.rpi2.0                   : rpi2                  : PIArgon                                  -  enabled
              system.adapter.rssfeed.0                : rssfeed               : PIArgon                                  -  enabled
              system.adapter.sonoff.0                 : sonoff                : PIArgon                                  -  enabled, port: 1884, bind: 0.0.0.0
              system.adapter.systeminfo.0             : systeminfo            : PIArgon                                  -  enabled
              system.adapter.tankerkoenig.0           : tankerkoenig          : PIArgon                                  -  enabled
              system.adapter.vis-colorpicker.0        : vis-colorpicker       : PIArgon                                  - disabled
              system.adapter.vis-hqwidgets.0          : vis-hqwidgets         : PIArgon                                  - disabled
              system.adapter.vis-icontwo.0            : vis-icontwo           : PIArgon                                  - disabled
              system.adapter.vis-inventwo.0           : vis-inventwo          : PIArgon                                  -  enabled
              system.adapter.vis-jsontemplate.0       : vis-jsontemplate      : PIArgon                                  -  enabled
              system.adapter.vis-material-advanced.0  : vis-material-advanced : PIArgon                                  -  enabled
              system.adapter.vis-material.0           : vis-material          : PIArgon                                  -  enabled
              system.adapter.vis-materialdesign.0     : vis-materialdesign    : PIArgon                                  -  enabled
              system.adapter.vis-metro.0              : vis-metro             : PIArgon                                  - disabled
              system.adapter.vis.0                    : vis                   : PIArgon                                  -  enabled
              system.adapter.web.0                    : web                   : PIArgon                                  -  enabled, port: 8082, bind: 0.0.0.0, run as: admin
              system.adapter.whatsapp-cmb.0           : whatsapp-cmb          : PIArgon                                  -  enabled
              system.adapter.yr.0                     : yr                    : PIArgon                                  -  enabled
              system.adapter.zigbee2mqtt.0            : zigbee2mqtt           : PIArgon                                  -  enabled
            
            + instance is alive
            
            Enabled adapters with bindings
            + system.adapter.admin.0                  : admin                 : PIArgon                                  -  enabled, port: 8081, bind: 0.0.0.0, run as: admin
              system.adapter.hue.0                    : hue                   : PIArgon                                  -  enabled, port: 443
            + system.adapter.influxdb.0               : influxdb              : PIArgon                                  -  enabled, port: 8086
              system.adapter.lovelace.0               : lovelace              : PIArgon                                  -  enabled, port: 8091, bind: 0.0.0.0, run as: admin
              system.adapter.mqtt.0                   : mqtt                  : PIArgon                                  -  enabled, port: 1886, bind: 0.0.0.0
              system.adapter.sonoff.0                 : sonoff                : PIArgon                                  -  enabled, port: 1884, bind: 0.0.0.0
              system.adapter.web.0                    : web                   : PIArgon                                  -  enabled, port: 8082, bind: 0.0.0.0, run as: admin
            
            ioBroker-Repositories
            ┌─────────┬────────────────────┬─────────────────────────────────────────────────────────┬──────────────┐
            │ (index) │ name               │ url                                                     │ auto upgrade │
            ├─────────┼────────────────────┼─────────────────────────────────────────────────────────┼──────────────┤
            │ 0       │ 'Stable (default)' │ 'http://download.iobroker.net/sources-dist.json'        │ false        │
            │ 1       │ 'Beta (latest)'    │ 'http://download.iobroker.net/sources-dist-latest.json' │ false        │
            └─────────┴────────────────────┴─────────────────────────────────────────────────────────┴──────────────┘
            
            Active repo(s): Stable (default)
            Upgrade policy: none
            
            Installed ioBroker-Adapters
            Used repository: Stable (default)
            Adapter    "admin"        : 7.7.22   , installed 7.7.22
            Adapter    "alias-manager": 2.0.0    , installed 2.0.0
            Adapter    "backitup"     : 3.3.13   , installed 3.3.13
            Adapter    "daswetter"    : 3.2.8    , installed 3.2.8
            Adapter    "discovery"    : 5.0.0    , installed 5.0.0
            Adapter    "dwd"          : 2.8.5    , installed 2.8.5
            Adapter    "flot"         : 1.12.0   , installed 1.12.0
            Adapter    "fritzdect"    : 2.6.2    , installed 2.6.2
            Adapter    "history"      : 3.0.1    , installed 3.0.1
            Adapter    "hue"          : 3.16.2   , installed 3.16.2
            Adapter    "icons-icons8" : 0.0.1    , installed 0.0.1
            Adapter    "icons-mfd-svg": 1.2.0    , installed 1.2.0
            Adapter    "icons-open-icon-library-png": 0.1.2, installed 0.1.2
            Adapter    "influxdb"     : 4.0.2    , installed 4.0.2
            Adapter    "javascript"   : 9.0.11   , installed 9.0.11
            Controller "js-controller": 7.0.7    , installed 7.0.7
            Adapter    "lovelace"     : 5.0.5    , installed 5.0.5
            Adapter    "mqtt"         : 6.1.4    , installed 6.1.4
            Adapter    "nina"         : 0.0.25   , installed 0.0.25
            Adapter    "pollenflug"   : 2.0.0    , installed 2.0.0
            Adapter    "pushover"     : 4.1.0    , installed 4.1.0
            Adapter    "pvforecast"   : 5.0.0    , installed 5.0.0
            Adapter    "radar2"       : 2.4.0    , installed 2.4.0
            Adapter    "rpi2"         : 2.4.0    , installed 2.4.0
            Adapter    "rssfeed"      : 3.6.1    , installed 3.6.1
            Adapter    "socketio"     : 6.7.1    , installed 6.7.1
            Adapter    "sonoff"       : 3.2.1    , installed 3.2.1
            Adapter    "systeminfo"   : 1.3.0    , installed 1.3.0
            Adapter    "tankerkoenig" : 3.4.0    , installed 3.4.0
            Adapter    "vis"          : 1.5.6    , installed 1.5.6
            Adapter    "vis-colorpicker": 2.0.3  , installed 2.0.3
            Adapter    "vis-hqwidgets": 1.5.1    , installed 1.5.1
            Adapter    "vis-icontwo"  : 1.18.0   , installed 1.18.0
            Adapter    "vis-inventwo" : 3.3.5    , installed 3.3.5
            Adapter    "vis-jsontemplate": 4.2.0 , installed 4.2.0
            Adapter    "vis-material" : 0.2.0    , installed 0.2.0
            Adapter    "vis-material-advanced": 1.7.4, installed 1.7.4
            Adapter    "vis-materialdesign": 0.5.9, installed 0.5.9
            Adapter    "vis-metro"    : 1.2.0    , installed 1.2.0
            Adapter    "web"          : 7.0.8    , installed 7.0.8
            Adapter    "whatsapp-cmb" : 0.3.0    , installed 0.3.0
            Adapter    "ws"           : 2.6.2    , installed 2.6.2
            Adapter    "yr"           : 5.3.0    , installed 5.3.0
            Adapter    "zigbee2mqtt"  : 3.0.10   , installed 3.0.9  [Updatable]
            
            Objects and States
            Please stand by - This may take a while
            Objects:        15413
            States:         14163
            
            *** OS-Repositories and Updates ***
            Hit:1 http://deb.debian.org/debian bookworm InRelease
            Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
            Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
            Hit:4 http://archive.raspberrypi.com/debian bookworm InRelease
            Hit:5 https://repos.influxdata.com/debian stable InRelease
            Hit:6 https://apt.grafana.com stable InRelease
            Hit:7 https://deb.nodesource.com/node_22.x nodistro InRelease
            Reading package lists...
            Pending Updates: 0
            
            *** Listening Ports ***
            Active Internet connections (only servers)
            Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
            tcp        0      0 0.0.0.0:1887            0.0.0.0:*               LISTEN      1001       44526      6946/io.mqtt.0
            tcp        0      0 0.0.0.0:1886            0.0.0.0:*               LISTEN      1001       44525      6946/io.mqtt.0
            tcp        0      0 0.0.0.0:1884            0.0.0.0:*               LISTEN      1001       41730      7002/io.sonoff.0
            tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      1001       44179      6715/iobroker.js-co
            tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1001       44184      6715/iobroker.js-co
            tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          6002       694/sshd: /usr/sbin
            tcp6       0      0 :::8086                 :::*                    LISTEN      999        7188       764/influxd
            tcp6       0      0 :::8082                 :::*                    LISTEN      1001       46003      7292/io.web.0
            tcp6       0      0 :::8081                 :::*                    LISTEN      1001       42929      6733/io.admin.0
            tcp6       0      0 :::8091                 :::*                    LISTEN      1001       49265      7548/io.lovelace.0
            tcp6       0      0 :::22                   :::*                    LISTEN      0          6004       694/sshd: /usr/sbin
            tcp6       0      0 :::3000                 :::*                    LISTEN      106        35882      5028/grafana
            udp        0      0 0.0.0.0:67              0.0.0.0:*                           1001       47154      7078/io.radar2.0
            udp        0      0 0.0.0.0:5353            0.0.0.0:*                           104        428        566/avahi-daemon: r
            udp        0      0 0.0.0.0:58629           0.0.0.0:*                           104        430        566/avahi-daemon: r
            udp6       0      0 :::59606                :::*                                104        431        566/avahi-daemon: r
            udp6       0      0 fe80::18e0:ffba:1eb:546 :::*                                0          6046       613/NetworkManager
            udp6       0      0 :::5353                 :::*                                104        429        566/avahi-daemon: r
            
            *** Log File - Last 25 Lines ***
            
            2026-01-28 17:26:08.648  - info: lovelace.0 (7548) starting. Version 5.0.5 in /opt/iobroker/node_modules/iobroker.lovelace, node: v22.22.0, js-controller: 7.0.7
            2026-01-28 17:26:08.829  - info: fritzdect.0 (7506) ____________________________________________
            2026-01-28 17:26:08.830  - info: fritzdect.0 (7506) create Main object DECT_ 099950756693 FRITZ!DECT 301 Vorgarten thermo.heat
            2026-01-28 17:26:08.889  - info: lovelace.0 (7548) http server listening on port 8091
            2026-01-28 17:26:15.337  - info: fritzdect.0 (7506) ____________________________________________
            2026-01-28 17:26:15.338  - info: fritzdect.0 (7506) create Main object DECT_ 099950961200 FRITZ!DECT 440 Wohnz thermo
            2026-01-28 17:26:16.368  - info: fritzdect.0 (7506) CREATE groups 1
            2026-01-28 17:26:16.372  - info: fritzdect.0 (7506) ____________________________________________
            2026-01-28 17:26:16.373  - info: fritzdect.0 (7506) create Main object DECT_ grp5C87D9-3C5609803 Wohnzimmer thermo.heat
            2026-01-28 17:26:16.482  - info: rssfeed.0 (7708) starting. Version 3.6.1 in /opt/iobroker/node_modules/iobroker.rssfeed, node: v22.22.0, js-controller: 7.0.7
            2026-01-28 17:26:16.695  - info: pvforecast.0 (7659) starting. Version 5.0.0 in /opt/iobroker/node_modules/iobroker.pvforecast, node: v22.22.0, js-controller: 7.0.7
            2026-01-28 17:26:18.348  - info: fritzdect.0 (7506) finished creating devices/groups (if any)
            2026-01-28 17:26:18.349  - info: fritzdect.0 (7506) templates are used(false)
            2026-01-28 17:26:18.350  - info: fritzdect.0 (7506) start creating templates
            2026-01-28 17:26:18.829  - info: fritzdect.0 (7506) CREATE Templates 2
            2026-01-28 17:26:19.270  - info: fritzdect.0 (7506) finished creating templates (if any)
            2026-01-28 17:26:19.271  - info: fritzdect.0 (7506) routines are used(false)
            2026-01-28 17:26:19.271  - info: fritzdect.0 (7506) start creating routines
            2026-01-28 17:26:19.725  - info: fritzdect.0 (7506) finished creating routines (if any)
            2026-01-28 17:26:19.726  - info: fritzdect.0 (7506) start initial updating devices/groups
            2026-01-28 17:26:23.323  - info: fritzdect.0 (7506) finished initial updating devices/groups
            2026-01-28 17:26:23.324  - info: fritzdect.0 (7506) going over to cyclic polling, messages to poll activity only in debug-mode
            2026-01-28 17:26:26.017  - info: pvforecast.0 (7659) Starting internal update cron (every 15 Minutes) for timezone: Europe/Berlin
            2026-01-28 17:26:39.228  - info: tankerkoenig.0 (7599) Start first request
            2026-01-28 17:26:47.818  - info: host.PIArgon instance system.adapter.daswetter.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION)
            
            
            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #52

            @oliverio

            @Kapitaen31 sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

            *** DISPLAY-SERVER SETUP ***
            Display-Server: false
            Unit display-manager.service could not be found.
            Display-Manager:
            Desktop:
            Session: tty

            @OliverIO sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

            Erreichbar immer booleanisieren

            das dürfte sein was ich gesehen hatte

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @Kapitaen31

              zum vergleichmal noch chatgpt 5.2
              sag mal welche ausgabe du besser findest bzw was dir mehr geholfen hat.


              Ja – da sind ein paar echte „Blockly-Export“-Klassiker drin, die dir in ioBroker früher oder später Probleme machen (oder dafür sorgen, dass es nicht so läuft wie gedacht). Ich gehe die auffälligsten Punkte durch und sage jeweils warum das problematisch ist und wie du’s robust bekommst.


              1) Parameter-Chaos vs. globale Variablen (und dadurch Logikfehler)

              Max_dimmen() hat diese Signatur:

              async function Max_dimmen(MAX_Wert, MAX_erreichbar, MAX_aufdimmen_aktiv, MAX_aufdimmen, MAX_Text, MAX_Zyklus_beendet, MAX_Farbwert, MAX_ein_aus)
              

              Du rufst sie z.B. morgens so auf:

              await Max_dimmen(30, true, false, true, ..., 2730, 'ein');
              

              Aber im Code vergleichst du später:

              getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val == MAX_erreichbar
              

              Und im Aufruf gibst du einmal true, einmal 1 (abends: Max_dimmen(100, 1, ...)).

              ➡️ Wenn der State ...Erreichbar Hue Max bei dir ein Zahl-Boolean ist (0/1), dann ist der Vergleich mit true zwar mit == oft „zufällig“ wahr (weil true == 1), aber das ist fragil. Wenn der State mal "true" oder true liefert, oder du auf === umstellst, knallt’s.

              Robust fix: Normalisieren statt „magischen“ Typen:

              const reachable = !!getState('alias.0.OG.Flur.Licht.Erreichbar Hue Max').val;
              if (reachable === !!MAX_erreichbar) { ... }
              

              Oder konsequent immer 1/0 verwenden.


              2) MAX_aufdimmen wird nie verwendet

              Du übergibst MAX_aufdimmen, aber im Code taucht die Variable nirgendwo sinnvoll auf (sie wird nicht gelesen). Das ist kein Crash, aber ein Hinweis: Blockly hat dir Paramater reingezogen, die du gar nicht brauchst.

              ➡️ Ergebnis: schwer wartbar, und du glaubst evtl. „das beeinflusst was“, tut es aber nicht.


              3) Falsche/inkonsistente Nutzung von compareTime()

              Du hast mehrere Varianten:

              a) Morgens:

              if (compareTime(getAstroDate('dawn', undefined, 18), null, '<', null)) {
              

              Das sieht aus wie Blockly-„Compare Time“ in der 4-Argument-Variante. Kann funktionieren, ist aber seltsam (null/null).

              b) Abends:

              if (compareTime('21:36', 'null', '<')) {
              

              Hier ist 'null' ein String, nicht null.

              ➡️ Das ist sehr wahrscheinlich ein Fehler. Je nach Implementierung von compareTime ist 'null' ein ungültiger Zeitpunkt und die Funktion liefert dann immer false oder verhält sich unerwartet.

              Vermutlich wolltest du: „wenn aktuelle Zeit < 21:36“ oder „wenn 21:36 < aktuelle Zeit“. Dafür ist die typische Blockly-Semantik:

              • compareTime('21:36', null, '<') → vergleicht '21:36' mit jetzt
              • oder compareTime(null, '21:36', '<') je nach Variante

              Konkreter Verdacht: Dein Abend-Einschalten läuft evtl. nie, weil der Vergleich falsch ist.


              4) Du setzt „EingeschaltetHueMax“ nur beim Ausschalten – aber nicht beim Einschalten

              Beim Dimmen „ein“ setzt du:

              • Helligkeit ggf. auf 5
              • Farbtemperatur
              • Abdimm-aktiv true
              • und erhöhst Helligkeit

              Beim Dimmen „aus“ machst du am Ende:

              setState('alias.0.OG.Flur.Licht.EingeschaltetHueMax', false);
              

              ➡️ Aber beim Einschalten setzt du EingeschaltetHueMax nicht auf true. Wenn andere Logik oder Visualisierung davon abhängt, ist das inkonsistent.


              5) Race-Conditions / parallele Intervalle: nicht konsequent gestoppt

              Du stoppst Intervalle zwar oft, aber nicht überall:

              • Beim Start von Max_dimmen('ein') stoppst du nicht automatisch ein evtl. laufendes MAX_ein oder MAX_aus (nur in den Schedules machst du das davor).
              • Im aus-Zweig stoppst du nur dann sofort, wenn Abdimmen_aktiv true ist:
              if (getState('...Abdimmen_aktiv').val) {
                clearInterval(MAX_ein); clearInterval(MAX_aus);
              }
              

              ➡️ Wenn Abdimmen_aktiv aus irgendeinem Grund false ist, können alte Intervalle weiterlaufen und du startest zusätzlich MAX_aus. Dann schreiben zwei Timer gegeneinander.

              Robust fix: Immer am Anfang von Max_dimmen() beide Intervalle killen, unabhängig vom Flag.


              6) setInterval(async () => { ... }) – async im Interval ohne Nutzen

              Du nutzt async in den Interval-Callbacks, aber du await-est da drin praktisch nichts (außer in setTimeout, was auch ohne async geht).

              ➡️ Kein direkter Fehler, aber: falls du später await einbaust, kann es passieren, dass ein neuer Interval-Tick startet, bevor der alte fertig ist (Überlappung). Besser: kein async im setInterval oder einen „Lock“ setzen.


              7) Schwellenwerte beim Ausschalten: mögliche Endlosschleife / nie ganz aus

              Im Ausblend-Zweig:

              if (MAX_Wert == 0) {
                if (helligkeit > 6) MAX_Helligkeit = true; else false;
              }
              ...
              if (MAX_Helligkeit) helligkeit -= 5
              else stop + ausgeschaltet=false
              

              ➡️ Du dimmst runter bis <= 6, dann stoppst du und setzt EingeschaltetHueMax=false. Aber du setzt die Helligkeit nicht auf 0. D.h. sie kann bei 6 stehen bleiben.

              • Wenn dein Gerät bei 6 noch sichtbar leuchtet: bleibt an.
              • Wenn du später „ein“ startest, hast du nicht „aus=0“ als Ausgangslage.

              Wenn du wirklich „aus“ willst, setz beim Ende explizit auf 0.


              8) Doppelbelegung / uneindeutige Zustände: „Abdimmen_aktiv“

              Du setzt:

              • beim Einschalten: Abdimmen_aktiv erst auf true, später auf MAX_aufdimmen_aktiv (bei dir meist false)
              • beim Ausschalten: setzt du es auf MAX_aufdimmen_aktiv

              ➡️ Der Name passt nicht: du nutzt es als „läuft gerade ein Dimmer-Zyklus“ (lock), aber setzt es am Ende auf einen Parameterwert, der in deinen Aufrufen immer false ist. Das ist okay, aber dann brauchst du keinen Parameter dafür.


              9) Cron-Strings aus States: Gefahr von „kaputtem Cron“ ohne Validierung

              Du baust Cron so:

              min + ' ' + std + ' ' + datum + ' ' + monat + ' ' + wochentag
              

              Wenn einer der States leer ist oder * falsch gesetzt wird, erzeugst du einen ungültigen Cron und schedule() kann still scheitern oder Exceptions werfen.

              ➡️ Blockly macht das gern, aber produktiv solltest du mindestens loggen, welcher Cron konkret gesetzt wurde und ob schedule() eine ID zurückgab.


              10) Kleinigkeiten, aber echte Wartungsbremsen

              • Sehr viele globale Variablen, die eigentlich nur Timer-Handles sind (MAX_ein, MAX_aus, Wartezeit).
              • MAX_Wert == 0 vs === – mit .val aus ioBroker kann auch string kommen. Dann ist == wieder „zufällig“ korrekt.

              Was ich konkret als „Minimal-Fix“ empfehlen würde (ohne alles umzubauen)

              1. Am Anfang von Max_dimmen immer alles stoppen:
              • clearInterval(MAX_ein), clearInterval(MAX_aus), optional clearTimeout(Wartezeit)
              1. Erreichbar immer booleanisieren
              • const reachable = !!getState(...).val;
              • und MAX_erreichbar ebenfalls !!MAX_erreichbar
              1. compareTime('21:36', 'null', '<') korrigieren
              • sehr wahrscheinlich muss 'null' → null (ohne Quotes) oder die Argumente anders.
              1. Beim Ausschalt-Ende Helligkeit auf 0 setzen
              • setState(...Helligkeit..., 0);
              1. Optional: EingeschaltetHueMax beim Einschalten auf true.

              Wenn du willst, kann ich dir als nächsten Schritt eine bereinigte Version 1:1 auf Basis deines Codes posten (gleiches Verhalten, aber mit den oben genannten Fixes, weniger Parametern, sauberem Timer-Handling). Ich würde dafür nur kurz wissen:

              • Liefert alias.0.OG.Flur.Licht.Erreichbar Hue Max bei dir 0/1 oder true/false?
              • Soll „aus“ wirklich auf 0 gehen oder bewusst bei 6 stoppen?
              K Offline
              K Offline
              Kapitaen31
              schrieb am zuletzt editiert von
              #53

              @OliverIO sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

              @Kapitaen31

              zum vergleichmal noch chatgpt 5.2
              sag mal welche ausgabe du besser findest bzw was dir mehr geholfen hat.

              Vielen Dank, das Du das bei den beiden KIs reingeworfen hast.
              Beides ist sehr wertvoll. ich denke, ich werde die Tipps von ChatGPT umsetzen....
              Das schaffe ich nur heute nicht mehr.
              Vielleicht schreibe ich das auch komplett in JavaScript neu... Das hatte ich schon länger auf dem Plan.


              Raspberry 4 (Trixie) mit 120GB SSD Bookworm
              Grafana, influxDB2, Hue, Zigbee2MQTT, Shelly,usw.

              K 1 Antwort Letzte Antwort
              0
              • OliverIOO OliverIO

                @Kapitaen31 sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                läuft bei dir auf dem raspi auch ein browser mit?
                ansonsten ist das beschriebene problem wahrscheinlich nicht relevant, sollte aber auch behoben werden.
                also 1) mit "vermüllen" ist gemeint, das da ein memory leak ist. d.h. da wird immer wieder speicher reserviert, der erst du neustart oder im browser mit neuladen behoben werden kann. solange genügend speicher da ist, kein problem, evtl hast du da auch noch nie was gemerkt, sollte aber behoben werden. weiß0 nicht wie safe da blockly ist.

                ich habe das skript mal bei gemini reingeworfen (chatgpt geht gerade nicht)


                Das sieht nach einem klassischen Blockly-Export für den ioBroker JavaScript-Adapter aus. Das Skript ist funktional, hat aber ein paar „Stolperfallen“, die im Alltag zu Problemen führen können (besonders beim Dimmen und den Zeitplänen).

                Hier sind die kritischen Punkte, die ich gefunden habe:

                1. Die "Erreichbarkeit"-Prüfung (MAX_erreichbar)

                In der Funktion Max_dimmen fragst du den Status Erreichbar Hue Max ab.

                • Das Problem: Wenn die Lampe über den Wandschalter stromlos gemacht wurde, ist sie "nicht erreichbar". Das Intervall läuft dann aber ewig weiter, weil die Bedingung getState(...).val == MAX_erreichbar nie erfüllt wird, aber auch kein else greift, das das Intervall stoppt.
                • Folge: Das Skript "vermüllt" den Speicher mit laufenden Intervallen im Hintergrund.

                2. Fehlende Initialisierung beim Neustart

                Die Variable MaxZeitplan und Max_abends_aus werden erst gesetzt, wenn sich einer der CRON-Datenpunkte ändert (change: 'ne').

                • Das Problem: Wenn du das Skript oder den ioBroker neu startest, sind diese Zeitpläne nicht aktiv, bis du die Werte in den Datenpunkten einmal manuell änderst.
                • Lösung: Du solltest die schedule-Logik am Ende des Skripts einmal ohne Trigger aufrufen, damit sie beim Start sofort registriert wird.

                3. Logik-Fehler beim "Abdimmen_aktiv"

                Im else if (MAX_ein_aus == 'aus')-Teil setzt du:
                setState('javascript.0.Datenpunkte.Flur.Licht.Abdimmen_aktiv', MAX_aufdimmen_aktiv, true);

                • Das Problem: Du übergibst hier die Variable MAX_aufdimmen_aktiv. In deinem morgendlichen Ausschalt-Trigger ist dieser Wert aber auf false gesetzt. Das ist zwar technisch nicht falsch, aber die Variable heißt im Datenpunkt "Abdimmen_aktiv", was verwirrend sein kann, wenn sie beim Ausschalten auf false geht, obwohl der Prozess noch läuft.

                4. Die compareTime bei Sonnenuntergang

                if (compareTime('21:36', 'null', '<'))
                
                
                • Das Problem: Das bedeutet: "Führe das Dimmen nur aus, wenn es vor 21:36 Uhr ist". Da der Sonnenuntergang im Sommer aber auch mal nach 21:36 Uhr sein kann, würde die Lampe an manchen Tagen im Jahr einfach gar nicht angehen. Prüfe, ob das so gewollt ist.

                5. Intervall-Dauer vs. Schrittweite

                Du dimmst alle 30 Sekunden um 5 Einheiten.

                • Um von 0 auf 100 zu kommen, braucht das Skript 20 Schritte.
                • (10 Minuten).
                • Gefahr: Wenn während dieser 10 Minuten jemand manuell das Licht schaltet oder ein anderer Trigger feuert, kommen sich die Intervalle in die Quere, falls MAX_ein / MAX_aus nicht sauber gelöscht werden.

                Zusammenfassung & Empfehlung

                Fehlerquelle Auswirkung Lösung
                Erreichbarkeit Endlosschleife im Hintergrund Ein else { clearInterval... } hinzufügen, falls Lampe offline.
                Startverhalten Zeitpläne nach Neustart inaktiv Trigger-Logik einmal beim Skriptstart ausführen.
                Variablen-Mix MAX_erreichbar wird mal als true (Boolean) und mal als 1 (Zahl) übergeben. JavaScript ist da tolerant, aber sauberer wäre es, immer den gleichen Typ zu nutzen.

                Ein kleiner Tipp für ioBroker:
                Anstatt Intervalle mit setInterval zu bauen, nutzen viele für Hue-Lampen das native transition (Übergangszeit) Kommando. Man kann beim setState einer Hue-Lampe oft ein JSON mitgeben: setState('id', {val: 100, ack: false, transition: 600}). Das würde die Lampe von alleine über 10 Minuten dimmen, ohne dass das Skript alle 30 Sekunden funken muss.

                Soll ich dir zeigen, wie du den Teil für den automatischen Start nach einem Neustart ergänzt?

                K Offline
                K Offline
                Kapitaen31
                schrieb am zuletzt editiert von
                #54

                @OliverIO sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                @Kapitaen31 sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                läuft bei dir auf dem raspi auch ein browser mit?
                ansonsten ist das beschriebene problem wahrscheinlich nicht relevant, sollte aber auch behoben werden.

                Nein, der PI läuft als reine SSH Maschine.
                Ich habe noch den Adapter VIS installiert und benutze es auch.


                Raspberry 4 (Trixie) mit 120GB SSD Bookworm
                Grafana, influxDB2, Hue, Zigbee2MQTT, Shelly,usw.

                1 Antwort Letzte Antwort
                0
                • K Kapitaen31

                  @OliverIO sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                  @Kapitaen31

                  zum vergleichmal noch chatgpt 5.2
                  sag mal welche ausgabe du besser findest bzw was dir mehr geholfen hat.

                  Vielen Dank, das Du das bei den beiden KIs reingeworfen hast.
                  Beides ist sehr wertvoll. ich denke, ich werde die Tipps von ChatGPT umsetzen....
                  Das schaffe ich nur heute nicht mehr.
                  Vielleicht schreibe ich das auch komplett in JavaScript neu... Das hatte ich schon länger auf dem Plan.

                  K Offline
                  K Offline
                  Kapitaen31
                  schrieb am zuletzt editiert von Kapitaen31
                  #55

                  sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                  @Kapitaen31

                  Vielleicht schreibe ich das auch komplett in JavaScript neu... Das hatte ich schon länger auf dem Plan.

                  So, ich habe heute das Script erneuert. Rein in JavaScript geschrieben (mit Hilfe von ChatGPT). Ich denke, das ist jetzt wesentlich besser. Mein altes Blookly stammte auch aus meiner Anfangszeit vom iobroker (vor ca. 4 Jahren). Da habe ich halt anders programmiert (Chaos).


                  /*************************************************

                  • Hue_Max – Flurbeleuchtung OG mit VIS Wochenplan
                  • Automatisch: 7 Tage x 4 Felder x 2 Pläne = 56 States
                  • Kein Warnlog beim ersten Start
                  • V1.0 04.02.2026
                    *************************************************/

                  /***********************

                  • ROOT-KONFIGURATION *
                    ***********************/

                  // Basis für Eigene Daten
                  const ROOT = '0_userdata.0.EigeneDaten.hue.flurOG.max';

                  // Alias-Basis (physisches Gerät)
                  // Später wenn Alias geändert ist: const ALIAS = 'alias.0.hue.flurOG.max';
                  const ALIAS = 'alias.0.OG.Flur.Licht';
                  /****** Bei zweiter Lampe */
                  // const ROOT = '0_userdata.0.EigeneDaten.hue.flurOG.spot';
                  // const ALIAS = 'alias.0.hue.flurOG.spot';

                  const DP = {
                  on: ${ALIAS}.EingeschaltetHueMax, // später on
                  reachable: ${ALIAS}.ErreichbarHueMax, // später reachable
                  brightness: ${ALIAS}.HelligkeitHueMax, //später brightness
                  ct: ${ALIAS}.FarbTemperaturHueMax,// später colorTemp

                  vacation:   `${ROOT}.control.vacation`,
                  manualPlan: `${ROOT}.control.manual`
                  

                  };

                  const PLAN = {
                  workday: {
                  morningOn: "05:00",
                  eveningOff: "21:45",
                  morningBrightness: 30,
                  eveningBrightness: 100
                  },
                  vacation: {
                  morningOn: "06:30",
                  eveningOff: "22:00",
                  morningBrightness: 30,
                  eveningBrightness: 100
                  },
                  colorTemp: 2730
                  };

                  let DP_STATUS = ${ROOT}.status.mode;

                  let COLOR_TEMP = 2730;
                  let DIM_STEP = 2; // Prozent pro Intervall
                  let DIM_INTERVAL = 7000; // ms Intervall

                  let dimTimer = null;
                  let mySchedules = []; // Scheduler-Registry
                  let isAutoDimming = false;
                  let isAutoSwitching = false;

                  /*********************************************************

                  • Initialisierung 0_userdata Defaults
                    *********************************************************/
                    const WEEKDAYS = ['mon','tue','wed','thu','fri','sat','sun'];
                    const STATE_DEFS = [
                    { name: 'onMorning', type: 'string', role: 'value', def: '05:00' },
                    { name: 'offEvening', type: 'string', role: 'value', def: '21:45' },
                    { name: 'brightnessMorning', type: 'number', role: 'level.dimmer', def: 30 },
                    { name: 'brightnessEvening', type: 'number', role: 'level.dimmer', def: 100 }
                    ];

                  function ensureWeekdayStates(planName) {
                  WEEKDAYS.forEach(day => {
                  const base = ${ROOT}.schedule.${planName}.${day};

                      STATE_DEFS.forEach(def => {
                          const id = `${base}.${def.name}`;
                  
                          if (!existsState(id)) {
                              ensureState(id, def);
                          } else {
                              const state = getState(id);
                              if (state.val === null || state.val === undefined) {
                                  setState(id, def.def);
                                  log(`State initialisiert: ${id} = ${def.def}`, 'info');
                              }
                          }
                      });
                  });
                  

                  }

                  function ensureStateWithDefault(id, common, def) {
                  if (!existsState(id)) {
                  ensureState(id, {
                  ...common,
                  def: def
                  });
                  } else {
                  const state = getState(id);
                  if (state.val === null || state.val === undefined) {
                  setState(id, def);
                  log(State initialisiert: ${id} = ${def}, 'info');
                  }
                  }
                  }

                  /* ========= Hilfsfunktionen ========= */

                  function astroStringToDate(timeStr) {
                  if (!timeStr) return null;
                  const parts = timeStr.split(':').map(Number);
                  const d = new Date();
                  d.setHours(parts[0], parts[1], parts[2] || 0, 0);
                  return d;
                  }

                  function timeToDate(timeStr) {
                  const [h, m] = timeStr.split(':').map(Number);
                  const d = new Date();
                  d.setHours(h, m, 0, 0);
                  return d;
                  }

                  function scheduleIfFuture(date, callback) {
                  if (date instanceof Date && date.getTime() > Date.now()) {
                  const s = schedule(date, callback);
                  if (s) mySchedules.push(s);
                  }
                  }

                  function getDayPlan(planName, day) {
                  const base = ${ROOT}.schedule.${planName}.${day};

                  const plan = {
                      morningOn: getState(`${base}.onMorning`)?.val,
                      eveningOff: getState(`${base}.offEvening`)?.val,
                      morningBrightness: getState(`${base}.brightnessMorning`)?.val,
                      eveningBrightness: getState(`${base}.brightnessEvening`)?.val
                  };
                  
                  if (Object.values(plan).some(v => v === undefined || v === null)) {
                      log(`Hue_Max: Unvollständiger Tagesplan für ${planName}/${day}`, 'warn');
                  }
                  
                  return plan;
                  

                  }

                  /* ========= SCHEDULER VERWALTUNG ========= */

                  function clearMySchedules() {
                  mySchedules.forEach(s => clearSchedule(s));
                  mySchedules = [];
                  }

                  /* ========= DIMMEN ========= */

                  function dimTo(target, callback) {
                  if (dimTimer) clearInterval(dimTimer);

                  dimTimer = setInterval(() => {
                      const current = getState(DP.brightness).val;
                  
                      if (current === target) {
                          clearInterval(dimTimer);
                          dimTimer = null;
                          if (callback) callback();
                          return;
                      }
                  
                      const next =
                          current < target
                              ? Math.min(current + DIM_STEP, target)
                              : Math.max(current - DIM_STEP, target);
                  
                      setState(DP.brightness, next);
                  }, DIM_INTERVAL);
                  

                  }

                  function switchOn(brightness) {
                  if (!getState(DP.reachable).val) return;

                  setState(DP.ct, PLAN.colorTemp);
                  setState(DP.brightness, 1);
                  setTimeout(() => {
                      setState(DP.on, true, true);
                      dimTo(brightness);
                  }, 300);
                  

                  }

                  function switchOff() {
                  dimTo(0, () => setState(DP.on, false));
                  }

                  /* ========= TAGES-SCHEDULER ========= */
                  function setStatusAuto() {
                  if (existsState(DP_STATUS)) {
                  setState(DP_STATUS, 0, true);
                  }
                  }

                  function scheduleDay() {
                  clearMySchedules();

                  const now = new Date();
                  const WEEKDAYS = ['sun','mon','tue','wed','thu','fri','sat'];
                  const day = WEEKDAYS[new Date().getDay()];
                  
                  
                  const planName = getState(DP.vacation)?.val ? 'vacation' : 'workday';
                  const plan = getDayPlan(planName, day);
                  
                  const sunrise = astroStringToDate(getState('javascript.0.variables.astro.sunrise')?.val);
                  const sunset  = astroStringToDate(getState('javascript.0.variables.astro.sunset')?.val);
                  
                  const morningOn = timeToDate(plan.morningOn);
                  const eveningOff = timeToDate(plan.eveningOff);
                  
                  // MORGEN EIN (nur vor Sonnenaufgang)
                  if (sunrise && morningOn < sunrise) {
                      scheduleIfFuture(timeToDate(plan.morningOn), () => {
                      if (timeToDate(plan.morningOn) < sunrise) {
                          switchOn(plan.morningBrightness);
                          }
                      });
                  }
                  
                  // MORGEN AUS
                  scheduleIfFuture(sunrise, () => {
                      if (getState(DP.on).val) switchOff();
                  });
                  
                  // ABEND EIN
                  scheduleIfFuture(sunset, () => {
                      switchOn(plan.eveningBrightness);
                  });
                  
                  // ABEND AUS
                  scheduleIfFuture(timeToDate(plan.eveningOff), () => {
                      if (getState(DP.on).val) switchOff();
                  });
                  
                  setStatusAuto();
                  log(`Hue_Max: Tages-Scheduler für ${planName}, ${day} neu aufgebaut`, 'info');
                  log(`Hue_Max: Morgen EIN um ${plan.morningOn}, Abend AUS um ${plan.eveningOff}`, 'info');
                  

                  }

                  /* ========= INITIALISIERUNG ========= */

                  // 1. Alle States für beide Pläne anlegen
                  ensureWeekdayStates('workday');
                  ensureWeekdayStates('vacation');
                  ensureStateWithDefault(
                  DP.vacation,
                  { type:'boolean', role:'state' },
                  false
                  );

                  ensureStateWithDefault(
                  DP.manualPlan,
                  { type:'boolean', role:'state' },
                  false
                  );

                  ensureStateWithDefault(
                  DP_STATUS,
                  {
                  type: 'number',
                  role: 'value',
                  states: { 0:'auto', 1:'manual', 2:'unreachable' }
                  },
                  0
                  );

                  // 3. Danach Scheduler starten
                  setTimeout(() => { scheduleDay(); }, 1000);

                  // 4. Tägliche Neuplanung um 00:01 Uhr
                  schedule('1 0 * * *', scheduleDay);


                  Raspberry 4 (Trixie) mit 120GB SSD Bookworm
                  Grafana, influxDB2, Hue, Zigbee2MQTT, Shelly,usw.

                  1 Antwort Letzte Antwort
                  0
                  • HomoranH Homoran

                    @Kapitaen31 sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                    Allerdings sind die Kerne trotz dem gut belastet.

                    finde erst mal raus warum.

                    Möglicherweise war gerade viel los, ggf. das RAM verbraucht und viel wurde ausgelagert. Wenn's dabei klemmt geht das auch ins load average mit ein

                    die Anzahl Kerne sind nur eine Richtschnur um fie load average zu bewerten, die Kerne srlbst müssen dabei gar nicht überladen sein

                    K Offline
                    K Offline
                    Kapitaen31
                    schrieb am zuletzt editiert von
                    #56

                    @Homoran sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                    @Kapitaen31 sagte in ioBroker auf PI4 stürzt immer mal wieder ab:

                    Allerdings sind die Kerne trotz dem gut belastet.

                    finde erst mal raus warum.

                    Ich hatte mir noch die LOGs angeschaut von vor dem letzten Absturz.

                    journalctl --no-pager -o short-iso \
                      --since "2026-01-30 16:30" \
                      --until "2026-01-30 17:30" > /tmp/journal_err.log
                    

                    Dabei kam diese Ausgabe raus.

                    journal2026 01 30 1630 1730.log

                    in dem LOG ist nichts auffähliges zu sehen. Jedenfalls für mich. Um 17:03 hören die LOGs auf und erst nach dem Neustart um ca. 17:21 werden sie fortgesetzt.


                    Raspberry 4 (Trixie) mit 120GB SSD Bookworm
                    Grafana, influxDB2, Hue, Zigbee2MQTT, Shelly,usw.

                    1 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      Kapitaen31
                      schrieb am zuletzt editiert von
                      #57

                      Ich habe nochmals mein System gecheckt. Vor allem war mein Swap Speicher sehr klein.

                      Mit diesem Befehl habe ich die Logs ausgeben lassen

                      journalctl -u influxdb --since "2026-02-02 18:10" --until "2026-02-02 18:15"
                      

                      In diesem Zeitraum waren meine Fehler von der influxdb2 zu suchen.

                      Dort wurde mir immer wieder dieser Fehler angezeigt.

                      2026-02-02 18:13:14.137 warn Error on writePoint("{"value":0,"time":"2026-02-02T17:13:12.917Z","from":"system.adapter.influxdb.0","q":0,"ack":true}): Error: connect ECONNREFUSED 192.168.178.36:8086 / "connect ECONNREFUSED 192.168.178.36:8086""
                      

                      Das Log ein wenig gekürzt sieht so aus:


                      journalctl -u influxdb --since "2026-02-02 18:10" --until "2026-02-02 18:15"
                      Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Main process exited, code>
                      Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Failed with result 'signal'>
                      Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Consumed 1h 7min 29.878s >
                      Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Scheduled restart job, re>
                      Feb 02 18:13:12 PIArgon systemd[1]: Stopped influxdb.service - InfluxDB is an o>
                      Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Consumed 1h 7min 29.878s >
                      Feb 02 18:13:13 PIArgon systemd[1]: Starting influxdb.service - InfluxDB is an >
                      Feb 02 18:13:14 PIArgon influxd-systemd-start.sh[230437]: time="2026-02-02T18:1>
                      Feb 02 18:13:14 PIArgon influxd-systemd-start.sh[230436]: time="2026-02-02T18:1>
                      Feb 02 18:13:14 PIArgon influxd-systemd-start.sh[230437]: Command "print-config>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230462]: time="2026-02-02T18:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230462]: Command "print-config>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230474]: time="2026-02-02T18:1>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230474]: Command "print-config>
                      Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230429]: InfluxDB API at http:>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                      Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1> lines 1-30

                      Ich habe dann noch nach einem out of Memory Fehler gesucht. Weil wahrscheinlich der Speicher voll war und der Dienst (influxDB) immer wieder beendet wurde.
                      Mit diesem Befehl habe ich es weiter eingegrenzt:

                      dmesg | grep -i oom
                      

                      Mir wurde immer wieder ein out of memory angezeigt.

                      Feb 01 18:11:19 PIArgon kernel: Out of memory: Killed process 779 (influxd) total-vm:3412376kB, anon-rss:579712kB, file-rss:84kB, shmem-rss:0kB, UID:999 pgtables:3192kB oom_score_adj:0
                      

                      Gesamtes Log:


                      Feb 01 18:11:18 PIArgon kernel: io.mqtt.0 invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
                      Feb 01 18:11:18 PIArgon kernel: oom_kill_process+0x140/0x368
                      Feb 01 18:11:19 PIArgon kernel: [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
                      Feb 01 18:11:19 PIArgon kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=influxd,pid=779,uid=999
                      Feb 01 18:11:19 PIArgon kernel: Out of memory: Killed process 779 (influxd) total-vm:3412376kB, anon-rss:579712kB, file-rss:84kB, shmem-rss:0kB, UID:999 pgtables:3192kB oom_score_adj:0
                      Feb 01 18:41:18 PIArgon kernel: node invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
                      Feb 01 18:41:18 PIArgon kernel: oom_kill_process+0x140/0x368
                      Feb 01 18:41:18 PIArgon kernel: [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
                      Feb 01 18:41:18 PIArgon kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=influxd,pid=105374,uid=999
                      Feb 01 18:41:18 PIArgon kernel: Out of memory: Killed process 105374 (influxd) total-vm:3408172kB, anon-rss:704452kB, file-rss:116kB, shmem-rss:0kB, UID:999 pgtables:2888kB oom_score_adj:0
                      Feb 02 18:13:12 PIArgon kernel: grafana invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
                      Feb 02 18:13:12 PIArgon kernel: oom_kill_process+0x140/0x368
                      Feb 02 18:13:12 PIArgon kernel: [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
                      Feb 02 18:13:13 PIArgon kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=influxd,pid=199663,uid=999
                      Feb 02 18:13:13 PIArgon kernel: Out of memory: Killed process 199663 (influxd) total-vm:3454828kB, anon-rss:657772kB, file-rss:0kB, shmem-rss:0kB, UID:999 pgtables:3008kB oom_score_adj:0

                      Deshalb habe ich den swap Speicher erhöht. Mit diesem Befehl habe ich dies geändert:

                      sudo dphys-swapfile swapoff
                      sudo nano /etc/dphys-swapfile
                      

                      In dem swap-File habe ich den Speicher auf 1024 gesetzt.

                      CONF_SWAPSIZE=1024
                      

                      Danach habe ich folgende Befehle ausgeführt, um den Swap zu aktivieren :

                      sudo dphys-swapfile setup
                      sudo dphys-swapfile swapon
                      

                      Mit

                      swapon --show
                      

                      kann der Speicher angezeigt werden.
                      Der sieht jetzt so aus:

                      PI@PIArgon:/opt/iobroker/log $ swapon --show
                      NAME      TYPE  SIZE USED PRIO
                      /var/swap file 1024M 530M   -2
                      
                      

                      Das waren bis jetzt meine Änderungen. Und bisher ist das System nicht wieder abgestürzt.

                      Gestern habe ich das System auf Trixie hochgezogen. mal sehen wie es sich jetzt noch verhält.
                      Aber ich denke, das ich es gelöst bekommen habe.


                      Raspberry 4 (Trixie) mit 120GB SSD Bookworm
                      Grafana, influxDB2, Hue, Zigbee2MQTT, Shelly,usw.

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • K Kapitaen31

                        Ich habe nochmals mein System gecheckt. Vor allem war mein Swap Speicher sehr klein.

                        Mit diesem Befehl habe ich die Logs ausgeben lassen

                        journalctl -u influxdb --since "2026-02-02 18:10" --until "2026-02-02 18:15"
                        

                        In diesem Zeitraum waren meine Fehler von der influxdb2 zu suchen.

                        Dort wurde mir immer wieder dieser Fehler angezeigt.

                        2026-02-02 18:13:14.137 warn Error on writePoint("{"value":0,"time":"2026-02-02T17:13:12.917Z","from":"system.adapter.influxdb.0","q":0,"ack":true}): Error: connect ECONNREFUSED 192.168.178.36:8086 / "connect ECONNREFUSED 192.168.178.36:8086""
                        

                        Das Log ein wenig gekürzt sieht so aus:


                        journalctl -u influxdb --since "2026-02-02 18:10" --until "2026-02-02 18:15"
                        Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Main process exited, code>
                        Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Failed with result 'signal'>
                        Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Consumed 1h 7min 29.878s >
                        Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Scheduled restart job, re>
                        Feb 02 18:13:12 PIArgon systemd[1]: Stopped influxdb.service - InfluxDB is an o>
                        Feb 02 18:13:12 PIArgon systemd[1]: influxdb.service: Consumed 1h 7min 29.878s >
                        Feb 02 18:13:13 PIArgon systemd[1]: Starting influxdb.service - InfluxDB is an >
                        Feb 02 18:13:14 PIArgon influxd-systemd-start.sh[230437]: time="2026-02-02T18:1>
                        Feb 02 18:13:14 PIArgon influxd-systemd-start.sh[230436]: time="2026-02-02T18:1>
                        Feb 02 18:13:14 PIArgon influxd-systemd-start.sh[230437]: Command "print-config>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230462]: time="2026-02-02T18:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230462]: Command "print-config>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230474]: time="2026-02-02T18:1>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230474]: Command "print-config>
                        Feb 02 18:13:15 PIArgon influxd-systemd-start.sh[230429]: InfluxDB API at http:>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1>
                        Feb 02 18:13:16 PIArgon influxd-systemd-start.sh[230436]: ts=2026-02-02T17:13:1> lines 1-30

                        Ich habe dann noch nach einem out of Memory Fehler gesucht. Weil wahrscheinlich der Speicher voll war und der Dienst (influxDB) immer wieder beendet wurde.
                        Mit diesem Befehl habe ich es weiter eingegrenzt:

                        dmesg | grep -i oom
                        

                        Mir wurde immer wieder ein out of memory angezeigt.

                        Feb 01 18:11:19 PIArgon kernel: Out of memory: Killed process 779 (influxd) total-vm:3412376kB, anon-rss:579712kB, file-rss:84kB, shmem-rss:0kB, UID:999 pgtables:3192kB oom_score_adj:0
                        

                        Gesamtes Log:


                        Feb 01 18:11:18 PIArgon kernel: io.mqtt.0 invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
                        Feb 01 18:11:18 PIArgon kernel: oom_kill_process+0x140/0x368
                        Feb 01 18:11:19 PIArgon kernel: [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
                        Feb 01 18:11:19 PIArgon kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=influxd,pid=779,uid=999
                        Feb 01 18:11:19 PIArgon kernel: Out of memory: Killed process 779 (influxd) total-vm:3412376kB, anon-rss:579712kB, file-rss:84kB, shmem-rss:0kB, UID:999 pgtables:3192kB oom_score_adj:0
                        Feb 01 18:41:18 PIArgon kernel: node invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
                        Feb 01 18:41:18 PIArgon kernel: oom_kill_process+0x140/0x368
                        Feb 01 18:41:18 PIArgon kernel: [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
                        Feb 01 18:41:18 PIArgon kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=influxd,pid=105374,uid=999
                        Feb 01 18:41:18 PIArgon kernel: Out of memory: Killed process 105374 (influxd) total-vm:3408172kB, anon-rss:704452kB, file-rss:116kB, shmem-rss:0kB, UID:999 pgtables:2888kB oom_score_adj:0
                        Feb 02 18:13:12 PIArgon kernel: grafana invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
                        Feb 02 18:13:12 PIArgon kernel: oom_kill_process+0x140/0x368
                        Feb 02 18:13:12 PIArgon kernel: [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
                        Feb 02 18:13:13 PIArgon kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=influxd,pid=199663,uid=999
                        Feb 02 18:13:13 PIArgon kernel: Out of memory: Killed process 199663 (influxd) total-vm:3454828kB, anon-rss:657772kB, file-rss:0kB, shmem-rss:0kB, UID:999 pgtables:3008kB oom_score_adj:0

                        Deshalb habe ich den swap Speicher erhöht. Mit diesem Befehl habe ich dies geändert:

                        sudo dphys-swapfile swapoff
                        sudo nano /etc/dphys-swapfile
                        

                        In dem swap-File habe ich den Speicher auf 1024 gesetzt.

                        CONF_SWAPSIZE=1024
                        

                        Danach habe ich folgende Befehle ausgeführt, um den Swap zu aktivieren :

                        sudo dphys-swapfile setup
                        sudo dphys-swapfile swapon
                        

                        Mit

                        swapon --show
                        

                        kann der Speicher angezeigt werden.
                        Der sieht jetzt so aus:

                        PI@PIArgon:/opt/iobroker/log $ swapon --show
                        NAME      TYPE  SIZE USED PRIO
                        /var/swap file 1024M 530M   -2
                        
                        

                        Das waren bis jetzt meine Änderungen. Und bisher ist das System nicht wieder abgestürzt.

                        Gestern habe ich das System auf Trixie hochgezogen. mal sehen wie es sich jetzt noch verhält.
                        Aber ich denke, das ich es gelöst bekommen habe.

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von
                        #58

                        @Kapitaen31

                        Swap erhöhen ist aber auch nur eine hilfskrücke um den Absturz zu verhindern. Für die Performance ist es katastrophal.
                        Insbesondere Datenbanken arbeiten stark mit RAM. Wenn dein Datenbestand größer wird und du das System noch weiter ausbauen willst, wirst du neue Hardware benötigen.

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        1 Antwort Letzte Antwort
                        1
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        687

                        Online

                        32.7k

                        Benutzer

                        82.4k

                        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