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. Skript für DarkSky Wetterdaten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Skript für DarkSky Wetterdaten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptclimate
11 Beiträge 5 Kommentatoren 1.9k 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.
  • M Offline
    M Offline
    martin111
    schrieb am zuletzt editiert von
    #2

    Wollte das Script ausprobieren.

    Nur bekomme ich es nicht zum laufen.

    Fehlermeldungen direkt aus dem Script-Editor und aus dem Log habe ich angehängt.

    Habe ich da ein Problem in Zeile 16 mit constants ? Wenn ich mit Maus über das Wort fahre erhalte ich folgenden Text:

    Cannot find name 'constants'. Did you mean '"constants"'?
    any

    Wahrscheinlich ist es eh nur eine Kleinigkeit, aber für mich sind Scripte Neuland.

    LG
    Martin

    Meldung1.png
    Meldung2.png

    1 Antwort Letzte Antwort
    0
    • D Offline
      D Offline
      Dschaedl
      schrieb am zuletzt editiert von
      #3

      Hallo Martin

      Lass diese Option einfach mal weg. die braucht es eigentlich gar nicht:
      also

      ...
      request('https://api.darksky.net/forecast/<yourApiKey>/<yourCoordinates>?units=si&lang=de', 
                   {json:true}, function (error, response, body) {
      ...
      
      

      viele Grüsse
      Daniel

      P.S.
      Ich nehme sie oben auch raus.

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        martin111
        schrieb am zuletzt editiert von
        #4

        Danke, danke, danke.

        Funktioniert nun perferkt.

        1 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          dos1973
          schrieb am zuletzt editiert von
          #5

          das script funktioniert bei mir und holt Daten, aber mein iobroker schmiert total ab???

          M 1 Antwort Letzte Antwort
          0
          • D Dschaedl

            Hallo zusammen

            Da WU keine Daten mehr liefert (zumindest gratis nicht) habe ich mir heute ein Skript zum auslesen der DarkSky Daten gebaut (quick&dirty).
            Wenn's jemand gebrauchen kann, nur zu.
            Falls ich mal Zeit finde werde ich evtl. einen Adapter daraus machen - oder jemand von euch übernimmt ;-)

            var request = require('request');
            var moment = require('moment');
            
            extractDarkSkyData(null);
            
            
            // Trigger
            schedule("*/5 * * * *", function (data) {
                extractDarkSkyData(data);
            });
            
            function extractDarkSkyData(data) {
                log("calling Darksky Wetter URL", 'info');
                //https://api.darksky.net/forecast/2cd....997/47.2694981,8.6569669?units=si&lang=de
                request('https://api.darksky.net/forecast/<yourApiKey>/<yourCoordinates>?units=si&lang=de', 
                         {json:true}, function (error, response, body) {
                    log("looking for DarkSky data...", 'info');
                    if (!error && response.statusCode == 200) {
                        log ("error:" + error);            
            
                        log ("basics", 'info');
                        setIfDifferent('darksky.latitude', "Latitude", body.latitude, 0, "°", true);
                        setIfDifferent('darksky.longitude', "Longitude", body.longitude, 0, "°", true);
                        setIfDifferent('darksky.timezone', "Timezone", body.timezone, "n/a", "", false);
                        
                        log ("current", 'info');
                        setIfDifferent('darksky.currently.time', "time (unix, local)", body.currently.time, 0, " unix", true);
                        setIfDifferent('darksky.currently.summary', "Weather", body.currently.summary, "n/a", "", false);
                        setIfDifferent('darksky.currently.icon', "", body.currently.icon, "", "", false);
                        setIfDifferent('darksky.currently.precipIntensity', "Niederschlag", body.currently.precipIntensity, 0, "mm/h", true);
                        setIfDifferent('darksky.currently.precipProbability', "Niederschlag Wahrscheinlichkeit", body.currently.precipProbability *100, 0, "%", true);
                        setIfDifferent('darksky.currently.precipType', "Niederschlag Typ", body.currently.precipType, "", "", false);
                        setIfDifferent('darksky.currently.temperature', "Temperatur", body.currently.temperature, 0, "°C", true);
                        setIfDifferent('darksky.currently.apparentTemperature', "Temperatur (Windchill)", body.currently.apparentTemperature, 0, "°C", true);
                        setIfDifferent('darksky.currently.dewPoint', "Taupunkt", body.currently.dewPoint, 0, "°C", true);
                        setIfDifferent('darksky.currently.humidity', "Luftfeuchtigkeit", body.currently.humidity *100, 0, "%", true);
                        setIfDifferent('darksky.currently.pressure', "Luftdruck", body.currently.pressure, 0, "hPa", true);
                        setIfDifferent('darksky.currently.windSpeed', "Windgeschwindigkeit", body.currently.windSpeed, 0, "m/s", true);
                        setIfDifferent('darksky.currently.windGust', "Boen", body.currently.windGust, 0, "m/s", true);
                        setIfDifferent('darksky.currently.windBearing', "Windrichtung", body.currently.windBearing, 0, "°", true);
                        setIfDifferent('darksky.currently.cloudCover', "Bedeckungsgrad", body.currently.cloudCover *100, 0, "%", true);
                        setIfDifferent('darksky.currently.uvIndex', "UV Index", body.currently.uvIndex, 0, "", true);
                        setIfDifferent('darksky.currently.visibility', "Sichtweite", body.currently.visibility, 0, "km", true);
                        setIfDifferent('darksky.currently.ozone', "Ozon", body.currently.ozone, 0, "DU", true);
                        
                        
                        var obsDate = moment.unix(body.currently.time);
                        var now = moment();
                        var age = moment.duration(now.diff(obsDate));
                        log("age in Seconds: " + age.asSeconds(), 'info');
                            
                        setIfDifferent('darksky.currently.age', 'current_age', age.asSeconds(), 0, 's', true);
                        setIfDifferent('darksky.currently.time2', 'Zeit', obsDate.format("DD.MM.YYYY HH:mm:ss ZZ"), "", '', false);
                        
                        log ("hourly", 'info');
                        var i=0;
                        body.hourly.data.forEach(function(value, index, array){
                            var obsDate = moment.unix(value.time);
                            var now = moment();
                            var age = moment.duration(now.diff(obsDate));
                            log("age in Seconds: " + age.asSeconds(), 'info');
            
                            //I'm only interested in future data. If you want all data, remove the 'if'
                            if (age < 0) {
                                log("future entry. store it", 'debug');
                                setIfDifferent('darksky.hourly.'+i+'.time', "time (unix, local)", value.time, 0, "unix", true);
                                setIfDifferent('darksky.hourly.'+i+'.summary', "Weather", value.summary, "n/a", "", false);
                                setIfDifferent('darksky.hourly.'+i+'.icon', "", value.icon, "", "", false);
                                setIfDifferent('darksky.hourly.'+i+'.precipIntensity', "Niederschlag", value.precipIntensity, 0, "mm/h", true);
                                setIfDifferent('darksky.hourly.'+i+'.precipProbability', "Niederschlag Wahrscheinlichkeit", value.precipProbability *100, 0, "%", true);
                                setIfDifferent('darksky.hourly.'+i+'.precipType', "Niederschlag Typ", value.precipType, "", "", false);
                                setIfDifferent('darksky.hourly.'+i+'.temperature', "Temperatur", value.temperature, 0, "°C", true);
                                setIfDifferent('darksky.hourly.'+i+'.apparentTemperature', "Temperatur (Windchill)", value.apparentTemperature, 0, "°C", true);
                                setIfDifferent('darksky.hourly.'+i+'.dewPoint', "Taupunkt", value.dewPoint, 0, "°C", true);
                                setIfDifferent('darksky.hourly.'+i+'.humidity', "Luftfeuchtigkeit", value.humidity *100, 0, "%", true);
                                setIfDifferent('darksky.hourly.'+i+'.pressure', "Luftdruck", value.pressure, 0, "hPa", true);
                                setIfDifferent('darksky.hourly.'+i+'.windSpeed', "Windgeschwindigkeit", value.windSpeed, 0, "m/s", true);
                                setIfDifferent('darksky.hourly.'+i+'.windGust', "Boen", value.windGust, 0, "m/s", true);
                                setIfDifferent('darksky.hourly.'+i+'.windBearing', "Windrichtung", value.windBearing, 0, "°", true);
                                setIfDifferent('darksky.hourly.'+i+'.cloudCover', "Bedeckungsgrad", value.cloudCover *100, 0, "%", true);
                                setIfDifferent('darksky.hourly.'+i+'.uvIndex', "UV Index", value.uvIndex, 0, "", true);
                                setIfDifferent('darksky.hourly.'+i+'.visibility', "Sichtweite", value.visibility, 0, "km", true);
                                setIfDifferent('darksky.hourly.'+i+'.ozone', "Ozon", value.ozone, 0, "DU", true);
                                setIfDifferent('darksky.hourly.'+i+'.age', 'current_age', age.asSeconds(), 0, 's', true);
                                setIfDifferent('darksky.hourly.'+i+'.time2', 'Zeit', obsDate.format("DD.MM.YYYY HH:mm:ss ZZ"), "", '', false);
                                i++
                            } else {
                                log("past entry - not stored");
                            }
                        });
                        
                        log ("daily", 'info');
                        i=0;
                        body.daily.data.forEach(function(value, index, array){
                            var obsDate = moment.unix(value.time);
                            var now = moment();
                            var age = moment.duration(now.diff(obsDate));
                            log("age in Seconds: " + age.asSeconds(), 'info');
                            
                            if (age < 0) {
                                log("future entry. store it", 'debug');
                                setIfDifferent('darksky.daily.'+i+'.time', "time (unix, local)", value.time, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.summary', "Weather", value.summary, "n/a", "", false);
                                setIfDifferent('darksky.daily.'+i+'.icon', "", value.icon, "", "", false);
                                setIfDifferent('darksky.daily.'+i+'.sunriseTime', "Sonnenaufgang", value.sunriseTime, "", "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.sunsetTime', "Sonnenuntergang", value.sunsetTime, "", "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.moonPhase', "Mondphase", value.moonPhase *100, 0, "%", true);
                                setIfDifferent('darksky.daily.'+i+'.precipIntensity', "Niederschlag", value.precipIntensity, 0, "mm/h", true);
                                setIfDifferent('darksky.daily.'+i+'.precipIntensityMax', "Niederschlag MAX", value.precipIntensityMax, 0, "mm/h", true);
                                setIfDifferent('darksky.daily.'+i+'.precipIntensityMaxTime', "Niederschlag MAX Zeit", value.precipIntensityMaxTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.precipIntensity', "Niederschlag", value.precipIntensity, 0, "mm/h", true);
                                setIfDifferent('darksky.daily.'+i+'.precipProbability', "Niederschlag Wahrscheinlichkeit", value.precipProbability *100, 0, "%", true);
                                setIfDifferent('darksky.daily.'+i+'.precipType', "Niederschlag Typ", value.precipType, "", "", false);
                                setIfDifferent('darksky.daily.'+i+'.temperatureHigh', "Temperatur High", value.temperatureHigh, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.temperatureHighTime', "Temperatur High Zeit", value.temperatureHighTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.temperatureLow', "Temperatur Low", value.temperatureLow, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.temperatureLowTime', "Temperatur Low Zeit", value.temperatureLowTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureHigh', "Temperatur High (Windchill)", value.apparentTemperatureHigh, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureHighTime', "Temperatur (Windchill) High Zeit", value.apparentTemperatureHighTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureLow', "Temperatur Low (Windchill)", value.apparentTemperatureLow, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureLowTime', "Temperatur (windchill) Low Zeit", value.apparentTemperatureLowTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.dewPoint', "Taupunkt", value.dewPoint, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.humidity', "Luftfeuchtigkeit", value.humidity *100, 0, "%", true);
                                setIfDifferent('darksky.daily.'+i+'.pressure', "Luftdruck", value.pressure, 0, "hPa", true);
                                setIfDifferent('darksky.daily.'+i+'.windSpeed', "Windgeschwindigkeit", value.windSpeed, 0, "m/s", true);
                                setIfDifferent('darksky.daily.'+i+'.windGust', "Boen", value.windGust, 0, "m/s", true);
                                setIfDifferent('darksky.daily.'+i+'.windGustTime', "Boen Zeit", value.windGustTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.windBearing', "Windrichtung", value.windBearing, 0, "°", true);
                                setIfDifferent('darksky.daily.'+i+'.cloudCover', "Bedeckungsgrad", value.cloudCover *100, 0, "%", true);
                                setIfDifferent('darksky.daily.'+i+'.uvIndex', "UV Index", value.uvIndex, 0, "", true);
                                setIfDifferent('darksky.daily.'+i+'.uvIndexTime', "UV Index Zeit", value.uvIndexTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.visibility', "Sichtweite", value.visibility, 0, "km", true);
                                setIfDifferent('darksky.daily.'+i+'.ozone', "Ozon", value.ozone, 0, "DU", true);
                                setIfDifferent('darksky.daily.'+i+'.temperatureMax', "Temperatur MAX", value.temperatureMax, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.temperatureMaxTime', "Temperatur MAX Zeit", value.temperatureMaxTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.temperatureMin', "Temperatur MIN", value.temperatureMin, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.temperatureMinTime', "Temperatur MIN Zeit", value.temperatureMinTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureMax', "Temperatur MAX (Windchill)", value.apparentTemperatureMax, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureMaxTime', "Temperatur (Windchill) MAX Zeit", value.apparentTemperatureMaxTime, 0, "unix", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureMin', "Temperatur MIN (Windchill)", value.apparentTemperatureMin, 0, "°C", true);
                                setIfDifferent('darksky.daily.'+i+'.apparentTemperatureMinTime', "Temperatur (windchill) MAX Zeit", value.apparentTemperatureMinTime, 0, "unix", true);
            
                                setIfDifferent('darksky.daily.'+i+'.age', 'current_age', age.asSeconds(), 0, 's', true);
                                setIfDifferent('darksky.daily.'+i+'.time2', 'Zeit', obsDate.format("DD.MM.YYYY HH:mm:ss ZZ"), "", '', false);
                                i++
                            } else {
                                log("past entry - not stored");
                            }
                        });                                
                    } else {
                        log ("error:" + error.stack, 'error');
                    }
                    log("END Darksky Wetter data...", 'info');
                });
            }
            
            
            function setIfDifferent(id, name, value, initVal, unit, isNumber) {
                var oldVal = getState(id);
                if (oldVal.notExist) {
                    createState(id, {name: name, initialValue: initVal, unit: unit}, function(){
                    log("new State created: " + id + " ->" + name);
                    setIfDifferent(id, name, value, initVal, unit);
                    });
                }
                else if (oldVal.val != value) {
                    if (isNumber) {
                        setState(id, parseFloat(value));
                    } else {
                        setState(id, value);
                    }
                    log("new Value set for " + name + " (" + id + ")" + ": " + value + " / old: " + oldVal.val, 'info');
                }
            }
            

            viele Grüsse
            Daniel

            sigi234S Online
            sigi234S Online
            sigi234
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #6

            @Dschaedl sagte in Skript für DarkSky Wetterdaten:

            Da WU keine Daten mehr liefert (zumindest gratis nicht)

            Siehe mal da:

            Link

            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Immer Daten sichern!

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              dos1973
              schrieb am zuletzt editiert von
              #7

              da gibts aber wieder kein "current" also aktuelles wetter, oder?
              Darksky hat auch das "jetzt" wetter

              sigi234S 1 Antwort Letzte Antwort
              0
              • D dos1973

                da gibts aber wieder kein "current" also aktuelles wetter, oder?
                Darksky hat auch das "jetzt" wetter

                sigi234S Online
                sigi234S Online
                sigi234
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #8

                @dos1973 sagte in Skript für DarkSky Wetterdaten:

                da gibts aber wieder kein "current" also aktuelles wetter, oder?
                Darksky hat auch das "jetzt" wetter

                Doch, ein Auszug davon:

                Screenshot (2641).png

                Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Immer Daten sichern!

                1 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  dos1973
                  schrieb am zuletzt editiert von
                  #9

                  ok, dann schau ich da mal rein, Danke

                  1 Antwort Letzte Antwort
                  0
                  • D dos1973

                    das script funktioniert bei mir und holt Daten, aber mein iobroker schmiert total ab???

                    M Offline
                    M Offline
                    martin111
                    schrieb am zuletzt editiert von
                    #10

                    @dos1973 sagte in Skript für DarkSky Wetterdaten:

                    das script funktioniert bei mir und holt Daten, aber mein iobroker schmiert total ab???

                    hmm, also bei mir rennt das Script nun seit 28.März ohne Probleme durch, und auch Iobroker macht keine Zicken

                    1 Antwort Letzte Antwort
                    0
                    • J Offline
                      J Offline
                      JB72
                      schrieb am zuletzt editiert von
                      #11

                      Hallo,

                      deute ich das hier richtig:

                      schedule("*/5 * * * *", function (data) {

                      das die 5 bedeutet alle 5 Minuten werden die aktuellen Daten geholt? Weil ich mich gewundert habe in der Darksky API, das da schon über 200 Aufrufe waren, wobei das
                      Script erst ein paar Stunden lief.

                      Kann man hier einen kleineren Intervall einstellen? So oft muss das ja nicht sein die Daten abzurufen, auch wenn 1000 Aufrufe kostenfrei sind.

                      Grüße
                      JB

                      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

                      815

                      Online

                      32.6k

                      Benutzer

                      82.0k

                      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