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. deutsche Wettervorhersage mit DWD API-Services

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.0k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

deutsche Wettervorhersage mit DWD API-Services

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 3 Kommentatoren 1.0k Aufrufe 5 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.
  • jolicJ Online
    jolicJ Online
    jolic
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich habe vor einiger Zeit eine deutsche Wettervorhersage für ein CMS (MODX) mit dem DWD MOSMIX-Vorhersagedatensatz erstellt. Nun wollte ich dasselbe auch für ioBroker mit JavaScript umsetzen, bin aber noch Anfänger in JavaScript. Der MOSMIX-Vorhersagedatensatz ist ein äußerst nützliches und leistungsfähiges Werkzeug für die Wettervorhersage.

    Nun bin ich auf die DWD API-Services gestoßen, die mir einfacher erscheinen, um entsprechende Datenpunkte in ioBroker zu schreiben. Das Ergebnis (Beta-Version) habe ich auf github.com/jolichter/ioBroker_dwdWeather hochgeladen. Vielleicht kann es jemand gebrauchen oder hat Tipps zur Verbesserung des Codes. Ein aktuelles Problem besteht darin, ungenutzte Datenpunkte automatisch zu löschen.

    Ich habe eine Funktion hinzugefügt, die alle vorhandenen Datenpunkte durchläuft und überprüft, ob sie mit dem Format "dpBase" beginnen. Anschließend wird überprüft, ob der Datenpunkt in den Wetterdaten verwendet wird. Wenn nicht, wird der Datenpunkt gelöscht.

    Die Funktion habe ich am Ende des Skripts hinzugefügt (nach updateWeatherData), um sicherzustellen, dass zuerst die Wetterdaten aktualisiert und dann die ungenutzten Datenpunkte gelöscht werden:

    // Funktion zum Löschen ungenutzter Datenpunkte
    async function deleteUnusedDataPoints() {
        try {
            const existingDataPoints = await getObjectListAsync({ include_docs: true });
    
            for (const dataPoint of existingDataPoints) {
                const dataPointId = dataPoint._id;
    
                // Überprüfen, ob der Datenpunkt mit dpBase beginnt
                if (dataPointId.startsWith(dpBase)) {
                    let isUsed = false;
    
                    // Überprüfen, ob der Datenpunkt in den Wetterdaten verwendet wird
                    for (const url of urls) {
                        const response = await axios.get(url);
                        const weatherData = response.data;
                        const stationId = dataPointId.split('.')[3];
    
                        if (weatherData.hasOwnProperty(stationId)) {
                            if (dataPointId.startsWith(`${dpBase}.${stationId}`)) {
                                isUsed = true;
                                break;
                            }
                        }
                    }
    
                    // Datenpunkt löschen, wenn er nicht verwendet wird
                    if (!isUsed) {
                        await deleteStateAsync(dataPointId);
                        if (enableLogs) log('Deleting data point ' + dataPointId);
                    }
                }
            }
        } catch (error) {
            log('Fehler beim Löschen ungenutzter Datenpunkte: ' + error, 'error');
        }
    }
    
    // Funktion zum Aktualisieren der Wetterdaten aufrufen
    updateWeatherData();
    
    // Datenpunkte löschen
    deleteUnusedDataPoints();
    
    

    Leider funktioniert das nicht und beim Testen erhalte ich folgenden Error:

    script.js.common.dwdWeather: Fehler beim Löschen ungenutzter Datenpunkte: ReferenceError: getObjectListAsync is not defined
    

    Es funktioniert auch nicht mit getObjectListAsync, getStatesAsync, getAdapterObjectsAsync, getAllStatesAsync oder getStateListAsync. Hat jemand eine Idee, warum oder was ich falsch mache?

    Vielen Dank im Voraus für eure Hilfe!

    Mein System:

    • Raspberry Pi 4 - 8GB
    • Rasbbian bullseye
    • Kernel 6.1.21
    • Node.js 18.16.0
    • NPM 9.5.1
    • Admin 6.3.5
    crunchipC T 2 Antworten Letzte Antwort
    0
    • jolicJ jolic

      Hallo,

      ich habe vor einiger Zeit eine deutsche Wettervorhersage für ein CMS (MODX) mit dem DWD MOSMIX-Vorhersagedatensatz erstellt. Nun wollte ich dasselbe auch für ioBroker mit JavaScript umsetzen, bin aber noch Anfänger in JavaScript. Der MOSMIX-Vorhersagedatensatz ist ein äußerst nützliches und leistungsfähiges Werkzeug für die Wettervorhersage.

      Nun bin ich auf die DWD API-Services gestoßen, die mir einfacher erscheinen, um entsprechende Datenpunkte in ioBroker zu schreiben. Das Ergebnis (Beta-Version) habe ich auf github.com/jolichter/ioBroker_dwdWeather hochgeladen. Vielleicht kann es jemand gebrauchen oder hat Tipps zur Verbesserung des Codes. Ein aktuelles Problem besteht darin, ungenutzte Datenpunkte automatisch zu löschen.

      Ich habe eine Funktion hinzugefügt, die alle vorhandenen Datenpunkte durchläuft und überprüft, ob sie mit dem Format "dpBase" beginnen. Anschließend wird überprüft, ob der Datenpunkt in den Wetterdaten verwendet wird. Wenn nicht, wird der Datenpunkt gelöscht.

      Die Funktion habe ich am Ende des Skripts hinzugefügt (nach updateWeatherData), um sicherzustellen, dass zuerst die Wetterdaten aktualisiert und dann die ungenutzten Datenpunkte gelöscht werden:

      // Funktion zum Löschen ungenutzter Datenpunkte
      async function deleteUnusedDataPoints() {
          try {
              const existingDataPoints = await getObjectListAsync({ include_docs: true });
      
              for (const dataPoint of existingDataPoints) {
                  const dataPointId = dataPoint._id;
      
                  // Überprüfen, ob der Datenpunkt mit dpBase beginnt
                  if (dataPointId.startsWith(dpBase)) {
                      let isUsed = false;
      
                      // Überprüfen, ob der Datenpunkt in den Wetterdaten verwendet wird
                      for (const url of urls) {
                          const response = await axios.get(url);
                          const weatherData = response.data;
                          const stationId = dataPointId.split('.')[3];
      
                          if (weatherData.hasOwnProperty(stationId)) {
                              if (dataPointId.startsWith(`${dpBase}.${stationId}`)) {
                                  isUsed = true;
                                  break;
                              }
                          }
                      }
      
                      // Datenpunkt löschen, wenn er nicht verwendet wird
                      if (!isUsed) {
                          await deleteStateAsync(dataPointId);
                          if (enableLogs) log('Deleting data point ' + dataPointId);
                      }
                  }
              }
          } catch (error) {
              log('Fehler beim Löschen ungenutzter Datenpunkte: ' + error, 'error');
          }
      }
      
      // Funktion zum Aktualisieren der Wetterdaten aufrufen
      updateWeatherData();
      
      // Datenpunkte löschen
      deleteUnusedDataPoints();
      
      

      Leider funktioniert das nicht und beim Testen erhalte ich folgenden Error:

      script.js.common.dwdWeather: Fehler beim Löschen ungenutzter Datenpunkte: ReferenceError: getObjectListAsync is not defined
      

      Es funktioniert auch nicht mit getObjectListAsync, getStatesAsync, getAdapterObjectsAsync, getAllStatesAsync oder getStateListAsync. Hat jemand eine Idee, warum oder was ich falsch mache?

      Vielen Dank im Voraus für eure Hilfe!

      Mein System:

      • Raspberry Pi 4 - 8GB
      • Rasbbian bullseye
      • Kernel 6.1.21
      • Node.js 18.16.0
      • NPM 9.5.1
      • Admin 6.3.5
      crunchipC Abwesend
      crunchipC Abwesend
      crunchip
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @jolic kennst du https://forum.iobroker.net/topic/30616/script-dwd-uwz-nina-warnungen-als-push-sprachnachrichten?_=1684962294772

      umgestiegen von Proxmox auf Unraid

      jolicJ 1 Antwort Letzte Antwort
      0
      • crunchipC crunchip

        @jolic kennst du https://forum.iobroker.net/topic/30616/script-dwd-uwz-nina-warnungen-als-push-sprachnachrichten?_=1684962294772

        jolicJ Online
        jolicJ Online
        jolic
        schrieb am zuletzt editiert von jolic
        #3

        @crunchip Danke, kannte ich nicht, sehe im Script eine cleanUnusedObjects Funktion welche auch getObjectListAsync nutzt. Sorry Unsinn, das war wo anders und hat hiermit nichts zu tun.

        Es scheint, dass das Problem bei mir darin besteht, dass die Funktion getObjectListAsync nicht definiert ist und führt zu dem Fehler "ReferenceError: getObjectListAsync is not defined". Verstehe ich im Moment nicht... werde das später in Ruhe anschauen müssen...

        1 Antwort Letzte Antwort
        0
        • jolicJ jolic

          Hallo,

          ich habe vor einiger Zeit eine deutsche Wettervorhersage für ein CMS (MODX) mit dem DWD MOSMIX-Vorhersagedatensatz erstellt. Nun wollte ich dasselbe auch für ioBroker mit JavaScript umsetzen, bin aber noch Anfänger in JavaScript. Der MOSMIX-Vorhersagedatensatz ist ein äußerst nützliches und leistungsfähiges Werkzeug für die Wettervorhersage.

          Nun bin ich auf die DWD API-Services gestoßen, die mir einfacher erscheinen, um entsprechende Datenpunkte in ioBroker zu schreiben. Das Ergebnis (Beta-Version) habe ich auf github.com/jolichter/ioBroker_dwdWeather hochgeladen. Vielleicht kann es jemand gebrauchen oder hat Tipps zur Verbesserung des Codes. Ein aktuelles Problem besteht darin, ungenutzte Datenpunkte automatisch zu löschen.

          Ich habe eine Funktion hinzugefügt, die alle vorhandenen Datenpunkte durchläuft und überprüft, ob sie mit dem Format "dpBase" beginnen. Anschließend wird überprüft, ob der Datenpunkt in den Wetterdaten verwendet wird. Wenn nicht, wird der Datenpunkt gelöscht.

          Die Funktion habe ich am Ende des Skripts hinzugefügt (nach updateWeatherData), um sicherzustellen, dass zuerst die Wetterdaten aktualisiert und dann die ungenutzten Datenpunkte gelöscht werden:

          // Funktion zum Löschen ungenutzter Datenpunkte
          async function deleteUnusedDataPoints() {
              try {
                  const existingDataPoints = await getObjectListAsync({ include_docs: true });
          
                  for (const dataPoint of existingDataPoints) {
                      const dataPointId = dataPoint._id;
          
                      // Überprüfen, ob der Datenpunkt mit dpBase beginnt
                      if (dataPointId.startsWith(dpBase)) {
                          let isUsed = false;
          
                          // Überprüfen, ob der Datenpunkt in den Wetterdaten verwendet wird
                          for (const url of urls) {
                              const response = await axios.get(url);
                              const weatherData = response.data;
                              const stationId = dataPointId.split('.')[3];
          
                              if (weatherData.hasOwnProperty(stationId)) {
                                  if (dataPointId.startsWith(`${dpBase}.${stationId}`)) {
                                      isUsed = true;
                                      break;
                                  }
                              }
                          }
          
                          // Datenpunkt löschen, wenn er nicht verwendet wird
                          if (!isUsed) {
                              await deleteStateAsync(dataPointId);
                              if (enableLogs) log('Deleting data point ' + dataPointId);
                          }
                      }
                  }
              } catch (error) {
                  log('Fehler beim Löschen ungenutzter Datenpunkte: ' + error, 'error');
              }
          }
          
          // Funktion zum Aktualisieren der Wetterdaten aufrufen
          updateWeatherData();
          
          // Datenpunkte löschen
          deleteUnusedDataPoints();
          
          

          Leider funktioniert das nicht und beim Testen erhalte ich folgenden Error:

          script.js.common.dwdWeather: Fehler beim Löschen ungenutzter Datenpunkte: ReferenceError: getObjectListAsync is not defined
          

          Es funktioniert auch nicht mit getObjectListAsync, getStatesAsync, getAdapterObjectsAsync, getAllStatesAsync oder getStateListAsync. Hat jemand eine Idee, warum oder was ich falsch mache?

          Vielen Dank im Voraus für eure Hilfe!

          Mein System:

          • Raspberry Pi 4 - 8GB
          • Rasbbian bullseye
          • Kernel 6.1.21
          • Node.js 18.16.0
          • NPM 9.5.1
          • Admin 6.3.5
          T Nicht stören
          T Nicht stören
          ticaki
          schrieb am zuletzt editiert von
          #4

          @jolic sagte in deutsche Wettervorhersage mit DWD API-Services:

          Es funktioniert auch nicht mit getObjectListAsync, getStatesAsync, getAdapterObjectsAsync, getAllStatesAsync oder getStateListAsync. Hat jemand eine Idee, warum oder was ich falsch mache?

          Das sind Funktionen die einem Adapter zur Verfügung stehen jedoch nicht einem Script.

          https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md
          https://github.com/ioBroker/ioBroker.javascript/blob/master/lib/javascript.d.ts

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          jolicJ 1 Antwort Letzte Antwort
          0
          • T ticaki

            @jolic sagte in deutsche Wettervorhersage mit DWD API-Services:

            Es funktioniert auch nicht mit getObjectListAsync, getStatesAsync, getAdapterObjectsAsync, getAllStatesAsync oder getStateListAsync. Hat jemand eine Idee, warum oder was ich falsch mache?

            Das sind Funktionen die einem Adapter zur Verfügung stehen jedoch nicht einem Script.

            https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md
            https://github.com/ioBroker/ioBroker.javascript/blob/master/lib/javascript.d.ts

            jolicJ Online
            jolicJ Online
            jolic
            schrieb am zuletzt editiert von jolic
            #5

            @ticaki Danke für die Info. Hab das zusätzlich so geprüft:

            // Liste der zu prüfenden Funktionen
            const functionsToCheck = [
                'getObjectViewAsync',
                'getForeignObjects',
                'getForeignStates',
                'getAllStates',
                'getAllObjects',
                // Füge hier weitere Funktionen hinzu...
            ];
            
            // Prüfe jede Funktion in der Liste
            for (const functionName of functionsToCheck) {
                if (typeof this[functionName] === 'function') {
                    log(`Die Funktion ${functionName} ist verfügbar.`);
                } else {
                    log(`Die Funktion ${functionName} ist NICHT verfügbar.`);
                }
            }
            

            Ausgabe ist bei allen "NICHT verfügbar", wie deine Links bestätigen.

            Abgesehen davon habe ich aufgehört, es zu versuchen, Datenpunkte automatisch zu löschen. Während meiner Tests ist mir ein Fehler im Code passiert, durch den ich versehentlich zu viele Datenpunkte gelöscht habe (in einer Testumgebung). Aus diesem Grund ist es sicherer, sie bei Bedarf manuell zu löschen.

            Mein Code ist größtenteils fertig, jedoch gestaltet sich die Beschaffung der stündlichen Messdaten (POI) via DWD ziemlich schwierig, da nicht alle Messstationen frei verfügbar sind. Zudem sind die stündlichen Messdaten bei den verfügbaren DWD Stationen nicht immer aktuell und können bis zu 2 Stunden hinterherhinken. In Anbetracht dieser Umstände erscheint es sinnvoll, eine eigene Mini-Wetterstation zu verwenden, um aktuelle Messdaten zu erhalten.

            T 1 Antwort Letzte Antwort
            0
            • jolicJ jolic

              @ticaki Danke für die Info. Hab das zusätzlich so geprüft:

              // Liste der zu prüfenden Funktionen
              const functionsToCheck = [
                  'getObjectViewAsync',
                  'getForeignObjects',
                  'getForeignStates',
                  'getAllStates',
                  'getAllObjects',
                  // Füge hier weitere Funktionen hinzu...
              ];
              
              // Prüfe jede Funktion in der Liste
              for (const functionName of functionsToCheck) {
                  if (typeof this[functionName] === 'function') {
                      log(`Die Funktion ${functionName} ist verfügbar.`);
                  } else {
                      log(`Die Funktion ${functionName} ist NICHT verfügbar.`);
                  }
              }
              

              Ausgabe ist bei allen "NICHT verfügbar", wie deine Links bestätigen.

              Abgesehen davon habe ich aufgehört, es zu versuchen, Datenpunkte automatisch zu löschen. Während meiner Tests ist mir ein Fehler im Code passiert, durch den ich versehentlich zu viele Datenpunkte gelöscht habe (in einer Testumgebung). Aus diesem Grund ist es sicherer, sie bei Bedarf manuell zu löschen.

              Mein Code ist größtenteils fertig, jedoch gestaltet sich die Beschaffung der stündlichen Messdaten (POI) via DWD ziemlich schwierig, da nicht alle Messstationen frei verfügbar sind. Zudem sind die stündlichen Messdaten bei den verfügbaren DWD Stationen nicht immer aktuell und können bis zu 2 Stunden hinterherhinken. In Anbetracht dieser Umstände erscheint es sinnvoll, eine eigene Mini-Wetterstation zu verwenden, um aktuelle Messdaten zu erhalten.

              T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von ticaki
              #6

              @jolic sagte in deutsche Wettervorhersage mit DWD API-Services:

              In Anbetracht dieser Umstände erscheint es sinnvoll, eine eigene Mini-Wetterstation zu verwenden, um aktuelle Messdaten zu erhalten.

              Bei diesen Stationen kannst du die Daten auch teilen und bekommst dafür Daten von anderen Hobby Stationen.

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              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

              801

              Online

              32.5k

              Benutzer

              81.6k

              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