Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Wunderground Wetter Abfrage über script

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Wunderground Wetter Abfrage über script

    This topic has been deleted. Only users with topic management privileges can see it.
    • V
      versteckt last edited by

      Morgähn, hab grad dein Script aktiviert.

      Bekommst ein "LikeIt", echt super.

      Muss mal schauen, inwiefern ich da etwas in meine Umgebung (vis) einbauen kann.

      LG Christian

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hab es auch schon genutzt. Etwas abgewandelt für mehr als eine Station.

        Daumen hoch!

        Gruß,

        Pix

        Gesendet von meinem iPhone mit Tapatalk

        1 Reply Last reply Reply Quote 0
        • L
          looxer01 last edited by

          Danke Euch - das freut mich 😄
          @versteckt:

          Muss mal schauen, inwiefern ich da etwas in meine Umgebung (vis) einbauen kann. `
          das wäre klasse, besonders, wenn du es hier posten könntest. Visuell sehen die Dinge ja immer noch anders aus 😉

          übrigens habe ich gleich in der Nachbarschaft eine Wetterstation, die ich über Wunderground abfrage.

          Das erspart die eigene Station und gibt die Möglichkeit auf Wettersituationen (Regen, Wind,Sonne) zu reagieren.

          Lohnt sich mal zu schauen was so in der Nähe ist.

          vG Looxer

          1 Reply Last reply Reply Quote 0
          • V
            versteckt last edited by

            Ja genau, bei mir ist eben auch eine ein paar hundert Meter entfernt.

            Gesendet von meinem iPhone mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • M
              mabas last edited by

              Hallo,

              es gibt auch ein hübsches NPM Paket:

              schedule("*/10 * * * *", function() {
                  var Wunderground = require('wunderground-api');
                  var client = new Wunderground('KEY', 'STATIONSNAME');
              
                  client.conditions('', function(err, data) {
                    if (err) throw err;
                    //normale Parameter setzen
                    setState("wunderground.aktuelleTemperatur", data.temp_c);
                    setState("wunderground.aktuelleLuftfeuchtigkeit", data.relative_humidity);
                    setState("wunderground.aktuelleWindrichtung", data.wind_dir);
                    setState("wunderground.aktuelleWindgeschwindigkeit", data.wind_gust_kph);
                    setState("wunderground.aktuelleSolarradiation", data.solarradiation);
              
              	//Zusammenfassen von Bewölkungsabstufungen
                    var condition = data.weather;
                    setState("wunderground.aktuelleWettersituation", condition);
                      if (condition === "Mostly Cloudy" || condition === "Cloudy" || condition === "Partly Cloudy" || condition === "Overcast" || condition === "Scattered Clouds" || condition === "Patches of Fog" || condition === "Fog") {
                          setState("wunderground.aktuelleWettersituation", "Wolken");
                      }
                      if (condition === "Rain" || condition ==="Chance of Rain" || condition ==="Light Rain" || condition ==="Light Rain Showers") {
                          setState("wunderground.aktuelleWettersituation", "Regen");
                      }
                      if (condition === "Clear" || condition === "Mostly Sunny" || condition === "Partly Sunny" || condition === "Shallow Fog") {
                          setState("wunderground.aktuelleWettersituation", "Heiter");
                      }
                      if (condition === "Chance of Snow" || condition === "Snow" || condition === "Light Snow") {
                          setState("wunderground.aktuelleWettersituation", "Schnee");
                      }
                  });
              });
              
              
              1 Reply Last reply Reply Quote 0
              • P
                pix last edited by

                Hallo,

                eine sehr schöne Lösung. Danke für den Hinweis auf das npm Paket.

                Allerdings kann ich die Daten nicht mit einem Stationscode abrufen, sondern nur (wie in der Doku gezeigt) mit einem Städtenamen.

                Und warum sind in dieser Zeile die beiden Anführungszeichen?

                 client.conditions('', function(err, data) {
                

                Ind er Doku stehen da die Optionen drin.

                var opts = {
                  key:'your api key here', 
                  city:'Washington', 
                  state: 'DC'
                }
                

                Gruß

                Pix

                EDIT: Die Abfrage über eine Station ist mit diesem Pakt wohl nicht vorgesehen: https://github.com/jaxgeller/node-weath … r/index.js

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by

                  So, jetzt habe ich es anders gemacht:

                  Das npm-Paket Wunderbar liefert auch Daten von Stationen.

                  In den Javascript-Einstellungen das Paket eintragen "wunderbar".

                  Beiliegendes Skript ist für derzeit zwei Stationen.

                  ! ````
                  /* Wunderground
                  ! liest Weather Underground Wetterdaten per Javascript ein (aber via npm)
                  http://forum.iobroker.de/viewtopic.php?f=21&t=1936&sid=ed4f119f1b4aeed8d878838bc99be8c6#p20733
                  Instanz 1
                  ! Mögliche conditions: https://www.wunderground.com/weather/api/d/docs?d=data/conditions
                  ! erstellt: 23.12.2015 von looxer01 http://forum.iobroker.net/viewtopic.php?f=21&t=1936#p16590
                  26.12.2015 angepasst von pix
                  07.01.2016 Optin Generalschalter
                  29.02.2016 auf npm wunderbar umgestellt
                  */
                  ! var instanz = 'javascript.1' + '.';
                  var pfad = 'Wunderground' + '.';
                  ! // Abfrage Wunderground
                  // Key und station id müssen über Wunderground bezogen werden
                  // # Update der Daten auf wunderground erfolgt immer zur vollen Stunde - abhängig von der Station
                  ! // bitte eintragen
                  var apikey = "APIKEYEINTRAGEN";
                  ! var wundergroundstation = [];
                  wundergroundstation[0] = "XXXXXXXXX"; //Station 1 eintragen
                  wundergroundstation[1] = "XXXXXXXXX"; //Station 2 eintragen ....
                  ! var logging = false;

                  // Ab hier mal nix ändern.....

                  ! createState(pfad + 'Optin', true, {
                  name: 'Optin Wunderground Daten abrufen',
                  desc: 'Sollen Weather Underground Daten aus dem Internet geladen werden?',
                  type: 'boolean',
                  read: true,
                  write: true
                  });
                  var idOptin = instanz + pfad + 'Optin';
                  ! function vereinfacheBedingungen (condition) {
                  var kurz = '',
                  de = '';
                  switch (condition) {
                  case "Mostly Cloudy":
                  de = 'überwiegend wolkig';
                  kurz = 'Wolken';
                  break;
                  case "Cloudy":
                  de = 'wolkig';
                  kurz = 'Wolken';
                  break;
                  case "Partly Cloudy":
                  de = 'teils wolkig';
                  kurz = 'Wolken';
                  break;
                  case "Scattered Clouds":
                  de = 'vereinzelte Wolken';
                  kurz = 'Wolken';
                  break;
                  case "Patches of Fog":
                  de = 'Nebelfelder';
                  kurz = 'Wolken';
                  break;
                  case "Fog":
                  de = 'Nebel';
                  kurz = 'Wolken';
                  break;
                  default:
                  kurz = 'Wolken';
                  break;
                  case "Rain":
                  de = 'Regen';
                  kurz = 'Regen';
                  break;
                  case "Chance of Rain":
                  de = 'Regen-Wahrscheinlichkeit';
                  kurz = 'Regen';
                  break;
                  case "Light Rain":
                  de = 'leichter Regen';
                  kurz = 'Regen';
                  break;
                  case "Light Rain Showers":
                  de = 'leichte Regenschauer';
                  kurz = 'Regen';
                  break;
                  case "Clear":
                  de = 'klar';
                  kurz = 'heiter';
                  break;
                  case "Mostly Sunny":
                  de = 'meist sonnig';
                  kurz = 'heiter';
                  break;
                  case "Partly Sunny":
                  de = 'teils sonnig';
                  kurz = 'heiter';
                  break;
                  case "Shallow Fog":
                  de = 'Bodennebel';
                  kurz = 'heiter';
                  break;
                  case "Chance of Snow":
                  de = 'Schneefall-Wahrscheinlichkeit';
                  kurz = 'Schnee';
                  break;
                  case "Snow":
                  de = 'Schneefall';
                  kurz = 'Schnee';
                  break;
                  case "Light Snow":
                  de = 'leichter Schneefall';
                  kurz = 'Schnee';
                  break;
                  }
                  return {
                  'vereinfacht' : kurz,
                  'deutsch' : de
                  };
                  }
                  ! function abfrageDaten(station) {
                  ! createState(pfad + station + '.Aktualisierung', " ", {
                  name: 'Wunderground - letzte Aktualisierung',
                  read: true,
                  write: true,
                  type: 'string'
                  });
                  createState(pfad + station + '.Bedingungen', " ", {
                  name: 'Wunderground - Bedingungen',
                  read: true,
                  write: true,
                  type: 'string'
                  });
                  createState(pfad + station + '.Temperatur_C', 0, {
                  name: 'Wunderground - Temperatur',
                  read: true,
                  write: true,
                  type: 'number',
                  unit: '°C'
                  });
                  createState(pfad + station + '.Temperatur_C_gefuehlt', 0, {
                  name: 'Wunderground - gefühlte Temperatur',
                  read: true,
                  write: true,
                  type: 'number',
                  unit: '°C'
                  });
                  createState(pfad + station + '.Wind_kmh', 0, {
                  name: 'Wunderground - Windgeschwindigkeit',
                  read: true,
                  write: true,
                  type: 'number',
                  unit: 'km/h'
                  });
                  createState(pfad + station + '.Windboeen', 0, {
                  name: 'Wunderground - Windboengeschwindigkeit',
                  read: true,
                  write: true,
                  type: 'number',
                  unit: 'km/h'
                  });
                  createState(pfad + station + '.Windrichtung'," ", {
                  name: 'Wunderground - Windrichtung',
                  read: true,
                  write: true,
                  type: 'string'
                  });
                  createState(pfad + station + '.Windbedingungen'," ", {
                  name: 'Wunderground - Windbedingungen',
                  read: true,
                  write: true,
                  type: 'string'
                  });
                  createState(pfad + station + '.Luftdruck', 0, {
                  name: 'Wunderground - Luftdruck',
                  read: true,
                  write: true,
                  type: 'number',
                  unit: 'mb'
                  });
                  createState(pfad + station + '.Luftdrucktrend'," ", {
                  name: 'Wunderground - Luftdrucktrend',
                  read: true,
                  write: true,
                  type: 'string'
                  });
                  createState(pfad + station + '.Luftfeuchte', 0, {
                  name: 'Wunderground - Luftfeuchte (relativ)',
                  read: true,
                  write: true,
                  type: 'number',
                  unit: '%'
                  });
                  createState(pfad + station + '.Sichtweite', 0, {
                  name: 'Wunderground - Sichtweite',
                  read: true,
                  write: true,
                  type: 'number',
                  unit: 'km'
                  });
                  ! try {
                  var Wunderground = require('wunderbar');
                  var client = new Wunderground(apikey);
                  client.conditions(station, function(err, data) {
                  if (err) throw err;
                  else {
                  setState(instanz + pfad + station + '.Aktualisierung', data.observation_time);
                  setState(instanz + pfad + station + '.Bedingungen', vereinfacheBedingungen(data.weather).deutsch);
                  setState(instanz + pfad + station + '.Temperatur_C', data.temp_c);
                  setState(instanz + pfad + station + '.Temperatur_C_gefuehlt', data.feelslike_c);
                  setState(instanz + pfad + station + '.Wind_kmh', data.wind_gust_kph);
                  setState(instanz + pfad + station + '.Windboeen', data.degrees);
                  setState(instanz + pfad + station + '.Windrichtung', data.wind_dir);
                  setState(instanz + pfad + station + '.Windbedingungen', data.wind_string);
                  setState(instanz + pfad + station + '.Luftdruck', data.pressure_mb);
                  setState(instanz + pfad + station + '.Luftdrucktrend', data.pressure_trend);
                  setState(instanz + pfad + station + '.Luftfeuchte', data.relative_humidity);
                  setState(instanz + pfad + station + '.Sichtweite', data.visibility_km);
                  }
                  });
                  ! } catch(fehler_try) {
                  log(fehler_try);
                  }
                  ! }
                  ! schedule("1,16,31,46 * * * *", function () { // alle 15 Minuten
                  abfrageDaten(wundergroundstation[0]);
                  }); // end of schedule
                  ! schedule("2,17,32,47 * * * *", function () { // alle 15 Minuten
                  abfrageDaten(wundergroundstation[1]);
                  }); // end of schedule
                  ! // bei Skriptstart
                  abfrageDaten(wundergroundstation[0]);
                  ! ````

                  Ich habe die Vereinfachung der Wetterbedingungen gleich noch in eine Übersetzung gepackt. Man kann mit

                  <size size="85">setState(instanz + pfad + station + '.Bedingungen', vereinfacheBedingungen(data.weather).deutsch);</size>

                  die deutsche Übersetzung oder mit

                  <size size="85">setState(instanz + pfad + station + '.Bedingungen', vereinfacheBedingungen(data.weather).kurz);</size>

                  die Kurzform (auch auf deutsch) abfragen

                  Gruß

                  Pix

                  1 Reply Last reply Reply Quote 0
                  • B
                    BobBruni last edited by

                    Hallo Pix,

                    habe nun folgendes gemacht:

                    1. $ npm install wunderbar

                    2. Unter Instanzen > javascript.0 > Konfiguration > Zusätzliche NPM-Module wunderbar eingetragen

                    3. Unter Skripte das von dir beiligende Skript eingefügt

                    Das Log bringt folgendes:

                    ! javascript.0 2017-02-18 14:31:00.616 warn State "javascript.1.Wunderground.IHHENKIR12.Sichtweite" not found
                    ! javascript.0 2017-02-18 14:31:00.616 warn State "javascript.1.Wunderground.IHHENKIR12.Luftfeuchte" not found
                    ! javascript.0 2017-02-18 14:31:00.615 warn State "javascript.1.Wunderground.IHHENKIR12.Luftdrucktrend" not found
                    ! javascript.0 2017-02-18 14:31:00.615 warn State "javascript.1.Wunderground.IHHENKIR12.Luftdruck" not found
                    ! javascript.0 2017-02-18 14:31:00.615 warn State "javascript.1.Wunderground.IHHENKIR12.Windbedingungen" not found
                    ! javascript.0 2017-02-18 14:31:00.614 warn State "javascript.1.Wunderground.IHHENKIR12.Windrichtung" not found
                    ! javascript.0 2017-02-18 14:31:00.614 warn State "javascript.1.Wunderground.IHHENKIR12.Windboeen" not found
                    ! javascript.0 2017-02-18 14:31:00.614 warn State "javascript.1.Wunderground.IHHENKIR12.Wind_kmh" not found
                    ! javascript.0 2017-02-18 14:31:00.613 warn State "javascript.1.Wunderground.IHHENKIR12.Temperatur_C_gefuehlt" not found
                    ! javascript.0 2017-02-18 14:31:00.613 warn State "javascript.1.Wunderground.IHHENKIR12.Temperatur_C" not found
                    ! javascript.0 2017-02-18 14:31:00.613 warn State "javascript.1.Wunderground.IHHENKIR12.Bedingungen" not found
                    ! javascript.0 2017-02-18 14:31:00.612 warn State "javascript.1.Wunderground.IHHENKIR12.Aktualisierung" not found

                    Habe ich etwas falsch gemacht oder hat hier Wunderground etwas geändert?

                    1 Reply Last reply Reply Quote 0
                    • Y
                      ykuendig last edited by

                      Hi Bob

                      Da Du auf einen einjährigen Post reagierst, wollte ich es mir nicht nehmen lassen, Dich darüber zu informieren, dass mittlerweile ein Weatherunderground Adapter geführt wird. Denn kann man benutzen, muss man aber nicht 😉

                      1 Reply Last reply Reply Quote 0
                      • htrecksler
                        htrecksler Forum Testing last edited by

                        Das Script ist für javascript.1 eingestellt. Bei dir läuft es unter der Instanz 0.

                        Du musst ganz oben im Script die Instanz anpassen.

                        1 Reply Last reply Reply Quote 0
                        • B
                          BobBruni last edited by

                          @ykuendig:

                          Hi Bob

                          Da Du auf einen einjährigen Post reagierst, wollte ich es mir nicht nehmen lassen, Dich darüber zu informieren, dass mittlerweile ein Weatherunderground Adapter geführt wird. Denn kann man benutzen, muss man aber nicht 😉 `

                          Oh man, den Adapter hab ich echt übersehen :roll: Aber danke für den Tip!

                          ` > Das Script ist für javascript.1 eingestellt. Bei dir läuft es unter der Instanz 0.

                          Du musst ganz oben im Script die Instanz anpassen. `

                          Auch danke dafür. Damit läuft das Skript. Und ich hab wieder was dazugerlernt 😉

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.0k
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          8
                          16
                          5409
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo