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. Praktische Anwendungen (Showcase)
  4. Wettervorhersage mit Flot

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    453

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

Wettervorhersage mit Flot

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
6 Beiträge 3 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.
  • R Offline
    R Offline
    ratte-rizzo
    schrieb am zuletzt editiert von
    #1

    Moin

    Es gibt ja einige Widgets für die Wettervorhersage, aber von der Optik her hat mich keines vom Hocker gerissen. Daher kam mir die Idee, ob man das nicht schicker mit Flot lösen könnte. Und daher stelle ich hier meinen ersten Versuch zur Schau. Vielleicht hat ja jemand einen Verbesserungsvorschlag. Leider kann die Flot-Version vom ioBroker kein xy-Diagramm (meines Wissens nach), daher musste ich etwas tricksen, um die stündlichen Daten, die alle gleichzeitig vorliegen, in einen zeitlichen Konzext zu bringen.

    Funktionsweise:

    Die stündliche Wettervorhersage von Wunderground wird zunächst schrittweise abgespeichert. Dabei wird zur Minute 0 einer jeden Stunde die Vorhersagestunde 0 gespeichert. Zur Minute 1 die Stunde 1 und so weiter. So bekommt man innerhalb von 30 Minuten die Vorhersage von 30 Stunden in einem zeitlichen Ablauf. Für meinen Bedarf reichen 30 Stunden Vorhersage. Um eine schnellere Aktualisierung zu erreichen, wiederhole ich das ganze mit der zweiten halben Stunde: Minute 30 –> Stunde 0, Minute 31 --> Stunde 1.

    ! ````
    createState("temp", function () {});
    createState("regen", function () {});
    createState("realfeel", function () {});
    schedule("* * * * *", function () {
    min = new Date().getMinutes();
    if (min >= 30){min = min - 30};

    for (i = 0; i < 30; i++){
    if (min == i) {
    setState("javascript.0.temp", getState("weatherunderground.0.forecastHourly."+i+"h.temp").val, true);
    setState("javascript.0.regen", getState("weatherunderground.0.forecastHourly."+i+"h.precipitation").val, true);
    setState("javascript.0.realfeel", getState("weatherunderground.0.forecastHourly."+i+"h.feelsLike").val, true);
    }
    }
    });

    ! ````

    Die Daten liegen jetzt also auf einer Zeitachse.

    Anzeige per Flot:

    Bei der richtigen Einstellung von Flot muss man etwas tricksen, damit es gescheit aussieht:

    Zeitspanne: Ende: Stundenende

    Umfang: 30min

    Autopudate: 30min

    So erhält man dann immer ein Update, nachdem 30 Stunden erfolgreich hintereinander abgespeichert wurden.

    Das Resultat kann sich meiner Meinung nach sehen lassen. Siehe Screenshot.

    Zwei Punkte sehe ich noch, die Verbesserungspotenzial beinhalten:

    1. Die Beschriftung der x-Achse stimmt noch nicht. Da ist mir noch nichts passendes eingefallen.

    [edit]

    erledigt: 2. Den Code kann man mit Sicherheit mit einer for-Schleife aufhübschen.

    [/edit]

    Ich bin auf Eure Rückmeldungen gespannt…

    Gruß

    Daniel
    4297_screenshot_2018-11-19_flot_chart.png

    NegaleinN 1 Antwort Letzte Antwort
    0
    • Jeeper.atJ Offline
      Jeeper.atJ Offline
      Jeeper.at
      schrieb am zuletzt editiert von
      #2

      Das gefällt mir ziemlich gut.

      Ich habe mir so etwas ähnliches gebastelt, ich erzeuge mit den Daten eine kleine Webseite die mein MagicMirror anzeigt.

      Aber Flot ist eine geniale Idee.

      ![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201811 ... 5cc4d1.jpg">https://uploads.tapatalk-cdn.com/20181119/154f7c921afea2066447bc884f5cc4d1.jpg</link_text>" />

      1 Antwort Letzte Antwort
      0
      • R Offline
        R Offline
        ratte-rizzo
        schrieb am zuletzt editiert von
        #3

        So, das mit der for-Schleife hab ich heute während der Bahnfahrt gemacht :)

        @Jeeper

        Wie hast Du denn die Wochentage in Dein Diagramm rein bekommen? Ist das auch mit Flot gemacht?

        1 Antwort Letzte Antwort
        0
        • Jeeper.atJ Offline
          Jeeper.atJ Offline
          Jeeper.at
          schrieb am zuletzt editiert von
          #4

          Hallo, nein ist nicht mit FLOT gemacht.

          Ich erzeuge mit folgendem Script ein JSON File.

          var fs = require("fs");
          schedule("*/10 * * * *", function () {
          daten = ['{',
          ['"data1": [',getState("daswetter.0.NextDaysDetailed.Location_1.Day_1.tempmax_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_2.tempmax_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_3.tempmax_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_4.tempmax_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_5.tempmax_value").val,
          ']'].join(''),',',
          ['"data2": [',getState("daswetter.0.NextDaysDetailed.Location_1.Day_1.tempmin_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_2.tempmin_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_3.tempmin_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_4.tempmin_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_5.tempmin_value").val,
          ']'].join(''),',',
          ['"data3": [',getState("daswetter.0.NextDaysDetailed.Location_1.Day_1.rain_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_2.rain_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_3.rain_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_4.rain_value").val,
          ',',getState("daswetter.0.NextDaysDetailed.Location_1.Day_5.rain_value").val,
          ']'].join(''),',',
          ['"x": ["',getState("daswetter.0.NextDaysDetailed.Location_1.Day_1.day_name").val,
          '","',getState("daswetter.0.NextDaysDetailed.Location_1.Day_2.day_name").val,
          '","',getState("daswetter.0.NextDaysDetailed.Location_1.Day_3.day_name").val,
          '","',getState("daswetter.0.NextDaysDetailed.Location_1.Day_4.day_name").val,
          '","',getState("daswetter.0.NextDaysDetailed.Location_1.Day_5.day_name").val,
          '"]'].join(''),'}'].join('');
          
          fs.writeFile("/xampp/htdocs/magicmirror/data.json", daten, (err) => {
              if (err){
                  console.error(err);
                  return;
              }
              console.log("File für das Diagramm MagicMirror erzeugt");
          });
          });
          

          Aus diesem wird eine kleine lokale Webseite erzeugt welche dann mittels IFrame in ein VIS für MagicMirror angezeigt wird.

          LG

          Günther

          1 Antwort Letzte Antwort
          0
          • R ratte-rizzo

            Moin

            Es gibt ja einige Widgets für die Wettervorhersage, aber von der Optik her hat mich keines vom Hocker gerissen. Daher kam mir die Idee, ob man das nicht schicker mit Flot lösen könnte. Und daher stelle ich hier meinen ersten Versuch zur Schau. Vielleicht hat ja jemand einen Verbesserungsvorschlag. Leider kann die Flot-Version vom ioBroker kein xy-Diagramm (meines Wissens nach), daher musste ich etwas tricksen, um die stündlichen Daten, die alle gleichzeitig vorliegen, in einen zeitlichen Konzext zu bringen.

            Funktionsweise:

            Die stündliche Wettervorhersage von Wunderground wird zunächst schrittweise abgespeichert. Dabei wird zur Minute 0 einer jeden Stunde die Vorhersagestunde 0 gespeichert. Zur Minute 1 die Stunde 1 und so weiter. So bekommt man innerhalb von 30 Minuten die Vorhersage von 30 Stunden in einem zeitlichen Ablauf. Für meinen Bedarf reichen 30 Stunden Vorhersage. Um eine schnellere Aktualisierung zu erreichen, wiederhole ich das ganze mit der zweiten halben Stunde: Minute 30 –> Stunde 0, Minute 31 --> Stunde 1.

            ! ````
            createState("temp", function () {});
            createState("regen", function () {});
            createState("realfeel", function () {});
            schedule("* * * * *", function () {
            min = new Date().getMinutes();
            if (min >= 30){min = min - 30};

            for (i = 0; i < 30; i++){
            if (min == i) {
            setState("javascript.0.temp", getState("weatherunderground.0.forecastHourly."+i+"h.temp").val, true);
            setState("javascript.0.regen", getState("weatherunderground.0.forecastHourly."+i+"h.precipitation").val, true);
            setState("javascript.0.realfeel", getState("weatherunderground.0.forecastHourly."+i+"h.feelsLike").val, true);
            }
            }
            });

            ! ````

            Die Daten liegen jetzt also auf einer Zeitachse.

            Anzeige per Flot:

            Bei der richtigen Einstellung von Flot muss man etwas tricksen, damit es gescheit aussieht:

            Zeitspanne: Ende: Stundenende

            Umfang: 30min

            Autopudate: 30min

            So erhält man dann immer ein Update, nachdem 30 Stunden erfolgreich hintereinander abgespeichert wurden.

            Das Resultat kann sich meiner Meinung nach sehen lassen. Siehe Screenshot.

            Zwei Punkte sehe ich noch, die Verbesserungspotenzial beinhalten:

            1. Die Beschriftung der x-Achse stimmt noch nicht. Da ist mir noch nichts passendes eingefallen.

            [edit]

            erledigt: 2. Den Code kann man mit Sicherheit mit einer for-Schleife aufhübschen.

            [/edit]

            Ich bin auf Eure Rückmeldungen gespannt…

            Gruß

            Daniel
            4297_screenshot_2018-11-19_flot_chart.png

            NegaleinN Offline
            NegaleinN Offline
            Negalein
            Global Moderator
            schrieb am zuletzt editiert von
            #5

            @ratte-rizzo sagte in Wettervorhersage mit Flot:

            Moin

            Servus!

            Könntest du den Code nochmal uploaden?
            Ist leider mit der Forumumstellung vermurkst worden.

            ° Node.js Update ---> iob nodejs-update
            ° Fixer ---> iob fix

            1 Antwort Letzte Antwort
            0
            • R Offline
              R Offline
              ratte-rizzo
              schrieb am zuletzt editiert von
              #6

              Frisch vom ioBroker raus kopiert, kann also etwas anders sein, als oben...

              createState("Vorhersage.temp", function () {});
              createState("Vorhersage.regen", function () {});
              createState("Vorhersage.realfeel", function () {});
              schedule("* * * * *", function () {
                  min = new Date().getMinutes();
                  if (min >= 30){min = min - 30};
                  
              for  (i = 0; i < 30; i++){
                if (min == i) {
                  setState("javascript.0.Vorhersage.temp", getState("weatherunderground.0.forecastHourly."+i+"h.temp").val, true);
                  setState("javascript.0.Vorhersage.regen", getState("weatherunderground.0.forecastHourly."+i+"h.precipitation").val, true);
                  setState("javascript.0.Vorhersage.realfeel", getState("weatherunderground.0.forecastHourly."+i+"h.feelsLike").val, true);
                }
              }
              });
              

              Dazu noch folgende Einstellungen bei Flot:
              Zwischenablage-1.jpg
              Zwischenablage-2.jpg
              Zwischenablage-3.jpg

              Ergebnis:
              Screenshot_2019-05-29 vis.png

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


              Support us

              ioBroker
              Community Adapters
              Donate

              927

              Online

              32.6k

              Benutzer

              81.9k

              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