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.7k

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

  • 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.
  • Chris76eC Chris76e

    Ist dieser Code richtig um nur am letzten Tag eines Quartales um 23:58 Uhr was auszuführen?

    // Funktion zum Einrichten der geplanten Ausführung
    function setupSchedule() {
      const now = new Date();
      const currentMonth = now.getMonth() + 1;
      const currentYear = now.getFullYear();
      let cronPattern;
    
      if (currentMonth === 3 || currentMonth === 6 || currentMonth === 9 || currentMonth === 12) {
        cronPattern = `58 23 ${getLastDayOfQuarter(currentMonth)} ${getMonthName(currentMonth)} *`;
      } else {
        cronPattern = '0 0 1 1 *';
      }
    
      schedule(cronPattern, saveJson);
    }
    
    
    // Hilfsfunktion, um den Namen des Monats zu erhalten
    function getMonthName(month) {
      const months = [
        'Jan',
        'Feb',
        'Mar',
        'Apr',
        'May',
        'Jun',
        'Jul',
        'Aug',
        'Sep',
        'Oct',
        'Nov',
        'Dec',
      ];
      return months[month - 1];
    }
    
    // Hilfsfunktion, um das letzte Datum des Quartals zu erhalten
    function getLastDayOfQuarter(month) {
      const quarterEndMonths = [3, 6, 9, 12];
      const quarter = Math.floor((month - 1) / 3) + 1;
      const lastMonthOfQuarter = quarterEndMonths[quarter - 1];
      const lastDay = new Date(new Date().getFullYear(), lastMonthOfQuarter, 0).getDate();
      return lastDay;
    }
    
    // Einrichten der geplanten Ausführung beim Start des Skripts
    setupSchedule();
    
    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #2

    @chris76e sagte: nur am letzten Tag eines Quartales um 23:58 Uhr was auszuführen?

    Genügt es nicht so?

    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
        }
    });
    

    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 sagte: nur am letzten Tag eines Quartales um 23:58 Uhr was auszuführen?

      Genügt es nicht so?

      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
          }
      });
      
      Chris76eC Online
      Chris76eC Online
      Chris76e
      schrieb am zuletzt editiert von
      #3

      @paul53 sagte in Cronjob am Ende vom Quartal:

      @chris76e sagte: nur am letzten Tag eines Quartales um 23:58 Uhr was auszuführen?

      Genügt es nicht so?

      Deswegen frag ich ja :blush: Also würde das reichen was du geschrieben hast?

      paul53P 1 Antwort Letzte Antwort
      0
      • Chris76eC Chris76e

        @paul53 sagte in Cronjob am Ende vom Quartal:

        @chris76e sagte: nur am letzten Tag eines Quartales um 23:58 Uhr was auszuführen?

        Genügt es nicht so?

        Deswegen frag ich ja :blush: Also würde das reichen was du geschrieben hast?

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

        @chris76e sagte: Also würde das reichen was du geschrieben hast?

        Davon gehe ich aus. Spricht logisch etwas dagegen?

        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 sagte: Also würde das reichen was du geschrieben hast?

          Davon gehe ich aus. Spricht logisch etwas dagegen?

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

          @paul53 Wenn ich das richtig verstanden habe

          58 = Minute 
          23 = Stunde 
          30,31 = Tag 30 oder 31 
          3,6,9,12 = Monat März, Juni, September oder Dezember
          

          Wass passiert dann z.B. im Dezember, wird es da am 30. und 31. ausgeführt?

          paul53P 1 Antwort Letzte Antwort
          0
          • Chris76eC Chris76e

            @paul53 Wenn ich das richtig verstanden habe

            58 = Minute 
            23 = Stunde 
            30,31 = Tag 30 oder 31 
            3,6,9,12 = Monat März, Juni, September oder Dezember
            

            Wass passiert dann z.B. im Dezember, wird es da am 30. und 31. ausgeführt?

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

            @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.

            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 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 Online
                              CodierknechtC Online
                              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

                                485

                                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