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. Skripten / Logik
  4. JavaScript
  5. Cronjob am Ende vom Quartal

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Cronjob am Ende vom Quartal

Geplant Angeheftet Gesperrt Verschoben JavaScript
16 Beiträge 4 Kommentatoren 1.2k Aufrufe 3 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.
  • paul53P paul53

    @chris76e sagte: wird es da am 30. und 31. ausgeführt?

    Es wird an beiden Tagen getriggert, aber der 30.12. wird durch die Abfrage ausgefiltert: Es ist weder der 31. noch Monat 6 oder 9.

    Chris76eC Online
    Chris76eC Online
    Chris76e
    schrieb am zuletzt editiert von Chris76e
    #7

    @paul53 Verstanden, also sollte das gesamte script so immer am letzten tag des quartals ausgeführt werden

    function saveJson() {
      // Aktuelles Jahr, Quartal und Monat abrufen
      const now = new Date();
      const currentYear = now.getFullYear();
      const currentMonth = now.getMonth() + 1;
      const currentQuarter = Math.floor((currentMonth - 1) / 3) + 1;
    
      // Datenpunkte abrufen und Min-/Max-Werte ermitteln
      const tempMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMin`).val;
      const tempMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMax`).val;
      const humidityMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMin`).val;
      const humidityMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMax`).val;
      const pressureMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMin`).val;
      const pressureMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMax`).val;
      const windMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Wind.quarterMax`).val;
      const gustMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Windboeen_max.quarterMax`).val;
      const rainMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Regenrate.quarterMax`).val;
      const irradianceMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Sonnenstrahlung.quarterMax`).val;
      const uvIndexMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.UV_Index.quarterMax`).val;
      const rainQuarter = getState(`statistics.0.temp.sumDelta.javascript.0.Wetterstation.Regen_Tag.quarter`).val;
      const sunshineQuarter = getState(`0_userdata.0.Wetter.Sonne.SonnenStunden_Quartal`).val;
    
      // JSON-Datensatz erstellen
      const data = {
        year: currentYear,
        quarter: currentQuarter,
        tempMin,
        tempMax,
        humidityMin,
        humidityMax,
        pressureMin,
        pressureMax,
        windMax,
        gustMax,
        rainMax,
        irradianceMax,
        uvIndexMax,
        rainQuarter,
        sunshineQuarter
      };
    
      // JSON-Datensatz aus dem Datenpunkt laden und parsen
      const jsonDataString = getState('0_userdata.0.JSON.MinMax.Quartal').val || '[]';
      let jsonData;
      try {
        jsonData = JSON.parse(jsonDataString);
      } catch (error) {
        console.error(`Error parsing JSON data: ${error}`);
        jsonData = [];
      }
    
      // JSON-Datensatz hinzufügen
      jsonData.push(data);
    
      // JSON-Datensatz im Datenpunkt speichern
      setState('0_userdata.0.JSON.MinMax.Quartal', JSON.stringify(jsonData), true);
    }
    // Zeitplan
    schedule('58 23 30,31 3,6,9,12 *', function() {
    
        const now = new Date();
    
        const monat = now.getMonth() + 1;
    
        if(now.getDate() == 31 || monat == 6 || monat == 9) {
    
            // Aktion am Quartalsende
    
        }
    
    });
    

    und kann ich das verwenden für den letzten Tag eines Monats?

    // Funktion zum Einrichten der geplanten Ausführung
    function setupSchedule() {
      const cronPattern = '58 23 28-31 * *'; // Ausführung am 28., 29., 30. oder 31. Tag des Monats um 23:58 Uhr
      schedule(cronPattern, function() {
        const now = new Date();
        const isLastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0).getDate() === now.getDate();
        if (isLastDayOfMonth) {
          saveJson();
        }
      });
    }
    // Einrichten der geplanten Ausführung beim Start des Skripts
    setupSchedule();
    
    paul53P 1 Antwort Letzte Antwort
    0
    • Chris76eC Chris76e

      @paul53 Verstanden, also sollte das gesamte script so immer am letzten tag des quartals ausgeführt werden

      function saveJson() {
        // Aktuelles Jahr, Quartal und Monat abrufen
        const now = new Date();
        const currentYear = now.getFullYear();
        const currentMonth = now.getMonth() + 1;
        const currentQuarter = Math.floor((currentMonth - 1) / 3) + 1;
      
        // Datenpunkte abrufen und Min-/Max-Werte ermitteln
        const tempMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMin`).val;
        const tempMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMax`).val;
        const humidityMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMin`).val;
        const humidityMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMax`).val;
        const pressureMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMin`).val;
        const pressureMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMax`).val;
        const windMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Wind.quarterMax`).val;
        const gustMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Windboeen_max.quarterMax`).val;
        const rainMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Regenrate.quarterMax`).val;
        const irradianceMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Sonnenstrahlung.quarterMax`).val;
        const uvIndexMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.UV_Index.quarterMax`).val;
        const rainQuarter = getState(`statistics.0.temp.sumDelta.javascript.0.Wetterstation.Regen_Tag.quarter`).val;
        const sunshineQuarter = getState(`0_userdata.0.Wetter.Sonne.SonnenStunden_Quartal`).val;
      
        // JSON-Datensatz erstellen
        const data = {
          year: currentYear,
          quarter: currentQuarter,
          tempMin,
          tempMax,
          humidityMin,
          humidityMax,
          pressureMin,
          pressureMax,
          windMax,
          gustMax,
          rainMax,
          irradianceMax,
          uvIndexMax,
          rainQuarter,
          sunshineQuarter
        };
      
        // JSON-Datensatz aus dem Datenpunkt laden und parsen
        const jsonDataString = getState('0_userdata.0.JSON.MinMax.Quartal').val || '[]';
        let jsonData;
        try {
          jsonData = JSON.parse(jsonDataString);
        } catch (error) {
          console.error(`Error parsing JSON data: ${error}`);
          jsonData = [];
        }
      
        // JSON-Datensatz hinzufügen
        jsonData.push(data);
      
        // JSON-Datensatz im Datenpunkt speichern
        setState('0_userdata.0.JSON.MinMax.Quartal', JSON.stringify(jsonData), true);
      }
      // Zeitplan
      schedule('58 23 30,31 3,6,9,12 *', function() {
      
          const now = new Date();
      
          const monat = now.getMonth() + 1;
      
          if(now.getDate() == 31 || monat == 6 || monat == 9) {
      
              // Aktion am Quartalsende
      
          }
      
      });
      

      und kann ich das verwenden für den letzten Tag eines Monats?

      // Funktion zum Einrichten der geplanten Ausführung
      function setupSchedule() {
        const cronPattern = '58 23 28-31 * *'; // Ausführung am 28., 29., 30. oder 31. Tag des Monats um 23:58 Uhr
        schedule(cronPattern, function() {
          const now = new Date();
          const isLastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0).getDate() === now.getDate();
          if (isLastDayOfMonth) {
            saveJson();
          }
        });
      }
      // Einrichten der geplanten Ausführung beim Start des Skripts
      setupSchedule();
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #8

      @chris76e
      Die Prüfung auf letzten Tag des Monats würde ich so machen (bei Trigger um 23:58 Uhr):

      if(new Date(Date.now() + 130000).getDate() == 1) { // morgen ist der 1.
      

      @chris76e sagte in Cronjob am Ende vom Quartal:

      sollte das gesamte script so immer am letzten tag des quartals ausgeführt werden

      Ja, wenn der Kommentar in Zeile 67 durch den Funktionsaufruf ersetzt wird.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      Chris76eC 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @chris76e
        Die Prüfung auf letzten Tag des Monats würde ich so machen (bei Trigger um 23:58 Uhr):

        if(new Date(Date.now() + 130000).getDate() == 1) { // morgen ist der 1.
        

        @chris76e sagte in Cronjob am Ende vom Quartal:

        sollte das gesamte script so immer am letzten tag des quartals ausgeführt werden

        Ja, wenn der Kommentar in Zeile 67 durch den Funktionsaufruf ersetzt wird.

        Chris76eC Online
        Chris76eC Online
        Chris76e
        schrieb am zuletzt editiert von
        #9

        @paul53 sagte in Cronjob am Ende vom Quartal:

        Ja, wenn der Kommentar in Zeile 67 durch den Funktionsaufruf ersetzt wird.

        Stehe jetzt gerade auf dem Schlauch, meinst du so?

        
        // Zeitplan
        schedule('58 23 30,31 3,6,9,12 *', function() {
        
            const now = new Date();
        
            const monat = now.getMonth() + 1;
        
            if(now.getDate() == 31 || monat == 6 || monat == 9) 
            
        function saveJson() {
          // Aktuelles Jahr, Quartal und Monat abrufen
          const now = new Date();
          const currentYear = now.getFullYear();
          const currentMonth = now.getMonth() + 1;
          const currentQuarter = Math.floor((currentMonth - 1) / 3) + 1;
        
          // Datenpunkte abrufen und Min-/Max-Werte ermitteln
          const tempMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMin`).val;
          const tempMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMax`).val;
          const humidityMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMin`).val;
          const humidityMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMax`).val;
          const pressureMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMin`).val;
          const pressureMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMax`).val;
          const windMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Wind.quarterMax`).val;
          const gustMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Windboeen_max.quarterMax`).val;
          const rainMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Regenrate.quarterMax`).val;
          const irradianceMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Sonnenstrahlung.quarterMax`).val;
          const uvIndexMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.UV_Index.quarterMax`).val;
          const rainQuarter = getState(`statistics.0.temp.sumDelta.javascript.0.Wetterstation.Regen_Tag.quarter`).val;
          const sunshineQuarter = getState(`0_userdata.0.Wetter.Sonne.SonnenStunden_Quartal`).val;
        
          // JSON-Datensatz erstellen
          const data = {
            year: currentYear,
            quarter: currentQuarter,
            tempMin,
            tempMax,
            humidityMin,
            humidityMax,
            pressureMin,
            pressureMax,
            windMax,
            gustMax,
            rainMax,
            irradianceMax,
            uvIndexMax,
            rainQuarter,
            sunshineQuarter
          };
        
          // JSON-Datensatz aus dem Datenpunkt laden und parsen
          const jsonDataString = getState('0_userdata.0.JSON.MinMax.Quartal').val || '[]';
          let jsonData;
          try {
            jsonData = JSON.parse(jsonDataString);
          } catch (error) {
            console.error(`Error parsing JSON data: ${error}`);
            jsonData = [];
          }
        
          // JSON-Datensatz hinzufügen
          jsonData.push(data);
        
          // JSON-Datensatz im Datenpunkt speichern
          setState('0_userdata.0.JSON.MinMax.Quartal', JSON.stringify(jsonData), true);
        }
        
        });
        
        paul53P 1 Antwort Letzte Antwort
        0
        • Chris76eC Chris76e

          @paul53 sagte in Cronjob am Ende vom Quartal:

          Ja, wenn der Kommentar in Zeile 67 durch den Funktionsaufruf ersetzt wird.

          Stehe jetzt gerade auf dem Schlauch, meinst du so?

          
          // Zeitplan
          schedule('58 23 30,31 3,6,9,12 *', function() {
          
              const now = new Date();
          
              const monat = now.getMonth() + 1;
          
              if(now.getDate() == 31 || monat == 6 || monat == 9) 
              
          function saveJson() {
            // Aktuelles Jahr, Quartal und Monat abrufen
            const now = new Date();
            const currentYear = now.getFullYear();
            const currentMonth = now.getMonth() + 1;
            const currentQuarter = Math.floor((currentMonth - 1) / 3) + 1;
          
            // Datenpunkte abrufen und Min-/Max-Werte ermitteln
            const tempMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMin`).val;
            const tempMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMax`).val;
            const humidityMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMin`).val;
            const humidityMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMax`).val;
            const pressureMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMin`).val;
            const pressureMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMax`).val;
            const windMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Wind.quarterMax`).val;
            const gustMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Windboeen_max.quarterMax`).val;
            const rainMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Regenrate.quarterMax`).val;
            const irradianceMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Sonnenstrahlung.quarterMax`).val;
            const uvIndexMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.UV_Index.quarterMax`).val;
            const rainQuarter = getState(`statistics.0.temp.sumDelta.javascript.0.Wetterstation.Regen_Tag.quarter`).val;
            const sunshineQuarter = getState(`0_userdata.0.Wetter.Sonne.SonnenStunden_Quartal`).val;
          
            // JSON-Datensatz erstellen
            const data = {
              year: currentYear,
              quarter: currentQuarter,
              tempMin,
              tempMax,
              humidityMin,
              humidityMax,
              pressureMin,
              pressureMax,
              windMax,
              gustMax,
              rainMax,
              irradianceMax,
              uvIndexMax,
              rainQuarter,
              sunshineQuarter
            };
          
            // JSON-Datensatz aus dem Datenpunkt laden und parsen
            const jsonDataString = getState('0_userdata.0.JSON.MinMax.Quartal').val || '[]';
            let jsonData;
            try {
              jsonData = JSON.parse(jsonDataString);
            } catch (error) {
              console.error(`Error parsing JSON data: ${error}`);
              jsonData = [];
            }
          
            // JSON-Datensatz hinzufügen
            jsonData.push(data);
          
            // JSON-Datensatz im Datenpunkt speichern
            setState('0_userdata.0.JSON.MinMax.Quartal', JSON.stringify(jsonData), true);
          }
          
          });
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #10

          @chris76e sagte: meinst du so?

          Nein, Zeile 63:

          function saveJson() {
            // Aktuelles Jahr, Quartal und Monat abrufen
            const now = new Date();
            const currentYear = now.getFullYear();
            const currentMonth = now.getMonth() + 1;
            const currentQuarter = Math.floor((currentMonth - 1) / 3) + 1;
           
            // Datenpunkte abrufen und Min-/Max-Werte ermitteln
            const tempMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMin`).val;
            const tempMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMax`).val;
            const humidityMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMin`).val;
            const humidityMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMax`).val;
            const pressureMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMin`).val;
            const pressureMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMax`).val;
            const windMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Wind.quarterMax`).val;
            const gustMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Windboeen_max.quarterMax`).val;
            const rainMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Regenrate.quarterMax`).val;
            const irradianceMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Sonnenstrahlung.quarterMax`).val;
            const uvIndexMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.UV_Index.quarterMax`).val;
            const rainQuarter = getState(`statistics.0.temp.sumDelta.javascript.0.Wetterstation.Regen_Tag.quarter`).val;
            const sunshineQuarter = getState(`0_userdata.0.Wetter.Sonne.SonnenStunden_Quartal`).val;
           
            // JSON-Datensatz erstellen
            const data = {
              year: currentYear,
              quarter: currentQuarter,
              tempMin,
              tempMax,
              humidityMin,
              humidityMax,
              pressureMin,
              pressureMax,
              windMax,
              gustMax,
              rainMax,
              irradianceMax,
              uvIndexMax,
              rainQuarter,
              sunshineQuarter
            };
           
            // JSON-Datensatz aus dem Datenpunkt laden und parsen
            const jsonDataString = getState('0_userdata.0.JSON.MinMax.Quartal').val || '[]';
            let jsonData;
            try {
              jsonData = JSON.parse(jsonDataString);
            } catch (error) {
              console.error(`Error parsing JSON data: ${error}`);
              jsonData = [];
            }
           
            // JSON-Datensatz hinzufügen
            jsonData.push(data);
           
            // JSON-Datensatz im Datenpunkt speichern
            setState('0_userdata.0.JSON.MinMax.Quartal', JSON.stringify(jsonData), true);
          }
          
          schedule('58 23 30,31 3,6,9,12 *', function() {
              const now = new Date();
              const monat = now.getMonth() + 1;
              if(now.getDate() == 31 || monat == 6 || monat == 9) {
                  saveJson();
              }
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          Chris76eC 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @chris76e sagte: meinst du so?

            Nein, Zeile 63:

            function saveJson() {
              // Aktuelles Jahr, Quartal und Monat abrufen
              const now = new Date();
              const currentYear = now.getFullYear();
              const currentMonth = now.getMonth() + 1;
              const currentQuarter = Math.floor((currentMonth - 1) / 3) + 1;
             
              // Datenpunkte abrufen und Min-/Max-Werte ermitteln
              const tempMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMin`).val;
              const tempMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussentemperatur.quarterMax`).val;
              const humidityMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMin`).val;
              const humidityMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Aussenfeuchtigkeit.quarterMax`).val;
              const pressureMin = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMin`).val;
              const pressureMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Druck_absolut.quarterMax`).val;
              const windMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Wind.quarterMax`).val;
              const gustMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Windboeen_max.quarterMax`).val;
              const rainMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Regenrate.quarterMax`).val;
              const irradianceMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.Sonnenstrahlung.quarterMax`).val;
              const uvIndexMax = getState(`statistics.0.temp.minmax.javascript.0.Wetterstation.UV_Index.quarterMax`).val;
              const rainQuarter = getState(`statistics.0.temp.sumDelta.javascript.0.Wetterstation.Regen_Tag.quarter`).val;
              const sunshineQuarter = getState(`0_userdata.0.Wetter.Sonne.SonnenStunden_Quartal`).val;
             
              // JSON-Datensatz erstellen
              const data = {
                year: currentYear,
                quarter: currentQuarter,
                tempMin,
                tempMax,
                humidityMin,
                humidityMax,
                pressureMin,
                pressureMax,
                windMax,
                gustMax,
                rainMax,
                irradianceMax,
                uvIndexMax,
                rainQuarter,
                sunshineQuarter
              };
             
              // JSON-Datensatz aus dem Datenpunkt laden und parsen
              const jsonDataString = getState('0_userdata.0.JSON.MinMax.Quartal').val || '[]';
              let jsonData;
              try {
                jsonData = JSON.parse(jsonDataString);
              } catch (error) {
                console.error(`Error parsing JSON data: ${error}`);
                jsonData = [];
              }
             
              // JSON-Datensatz hinzufügen
              jsonData.push(data);
             
              // JSON-Datensatz im Datenpunkt speichern
              setState('0_userdata.0.JSON.MinMax.Quartal', JSON.stringify(jsonData), true);
            }
            
            schedule('58 23 30,31 3,6,9,12 *', function() {
                const now = new Date();
                const monat = now.getMonth() + 1;
                if(now.getDate() == 31 || monat == 6 || monat == 9) {
                    saveJson();
                }
            });
            
            Chris76eC Online
            Chris76eC Online
            Chris76e
            schrieb am zuletzt editiert von
            #11

            @paul53 Danke

            metaxaM 1 Antwort Letzte Antwort
            0
            • Chris76eC Chris76e

              @paul53 Danke

              metaxaM Offline
              metaxaM Offline
              metaxa
              schrieb am zuletzt editiert von
              #12

              Kann ich das mit Blockly auch umsetzen?

              Ich möchte gerne jeweils am Monatsletzten um 23:30 den Monatsertrag meiner PV-Anlage wegschreiben, mit SQL protokollieren und dann mit e-charts darstellen.

              In Blockly/Trigger finde ich meiner Meinung nach nichts Passendes.

              paul53P 1 Antwort Letzte Antwort
              0
              • metaxaM metaxa

                Kann ich das mit Blockly auch umsetzen?

                Ich möchte gerne jeweils am Monatsletzten um 23:30 den Monatsertrag meiner PV-Anlage wegschreiben, mit SQL protokollieren und dann mit e-charts darstellen.

                In Blockly/Trigger finde ich meiner Meinung nach nichts Passendes.

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #13

                @metaxa sagte: am Monatsletzten um 23:30 den Monatsertrag meiner PV-Anlage wegschreiben

                Blockly_temp.JPG

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                1
                • metaxaM Offline
                  metaxaM Offline
                  metaxa
                  schrieb am zuletzt editiert von
                  #14

                  @paul53 Faszinierend, faszinierend ......

                  Jetzt täte ich es noch gerne verstehen:

                  205d90d9-7661-4b10-a948-57394efcfabf-image.png
                  ^Cronjob wird ausgeführt nur am 28., 29., 30., 31. jedes Monat

                  f317e36d-b138-4803-87b9-3b7d6b6c9149-image.png
                  ^liefert die aktuelle Systemzeit+30 Min.

                  92c8027a-a3f9-469e-b3a9-038599ba1fbb-image.png
                  ^Wenn die aktuelle Systemzeit+30Min. ?????????????? Das verstehe ich leider überhaupt nicht

                  @paul53 kannst du bitte versuchen mir das auszudeutschen?

                  CodierknechtC 1 Antwort Letzte Antwort
                  0
                  • metaxaM metaxa

                    @paul53 Faszinierend, faszinierend ......

                    Jetzt täte ich es noch gerne verstehen:

                    205d90d9-7661-4b10-a948-57394efcfabf-image.png
                    ^Cronjob wird ausgeführt nur am 28., 29., 30., 31. jedes Monat

                    f317e36d-b138-4803-87b9-3b7d6b6c9149-image.png
                    ^liefert die aktuelle Systemzeit+30 Min.

                    92c8027a-a3f9-469e-b3a9-038599ba1fbb-image.png
                    ^Wenn die aktuelle Systemzeit+30Min. ?????????????? Das verstehe ich leider überhaupt nicht

                    @paul53 kannst du bitte versuchen mir das auszudeutschen?

                    CodierknechtC Offline
                    CodierknechtC Offline
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #15

                    @metaxa sagte in Cronjob am Ende vom Quartal:

                    Jetzt täte ich es noch gerne verstehen:

                    Wenn man um 23:30 triggert und dann 30 Minuten draufrechnet, landet man zwangsläufig beim nächsten Tag.
                    Jetzt prüft man, ob dieser "nächste Tag" zufälligerweise der 1. ist.
                    Ist das so, befindet man sich aktuell (23:30 Uhr) am letzten des Monats.

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    metaxaM 1 Antwort Letzte Antwort
                    1
                    • CodierknechtC Codierknecht

                      @metaxa sagte in Cronjob am Ende vom Quartal:

                      Jetzt täte ich es noch gerne verstehen:

                      Wenn man um 23:30 triggert und dann 30 Minuten draufrechnet, landet man zwangsläufig beim nächsten Tag.
                      Jetzt prüft man, ob dieser "nächste Tag" zufälligerweise der 1. ist.
                      Ist das so, befindet man sich aktuell (23:30 Uhr) am letzten des Monats.

                      metaxaM Offline
                      metaxaM Offline
                      metaxa
                      schrieb am zuletzt editiert von
                      #16

                      @codierknecht sagte in Cronjob am Ende vom Quartal:

                      dieser "nächste Tag" zufälligerweise der 1. ist.
                      Ist das so, befindet man sich aktuell (23:30 Uhr) am letzten des Monat

                      6d5de3cc-da24-43eb-80d3-e059af49037d-image.png
                      d13cfd60-6770-43fc-98a5-977c82445cb1-image.png

                      @Codierknecht & @paul53 Lieben Dank, verstanden!! 'SmilyMitVikiBeimGeistesblitz'

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


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      817

                      Online

                      32.6k

                      Benutzer

                      82.1k

                      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