Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter, um nahenden & aktuellen Niederschlag zu erkennen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Adapter, um nahenden & aktuellen Niederschlag zu erkennen

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sleepwalker @Chris76e last edited by

      @chris76e said in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

      @codierknecht sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

      Das niederländische "Buienalarm" ist (zumindest in relativer Grenznähe) einer der zuverlässigsten Anbieter.
      Über dieses (undokumentierte) API erhält man Daten für die nächsten 2 Stunden im 5-Minuten-Intervall:
      https://cdn-secure.buienalarm.nl/api/3.4/forecast.php?lat=51.5&lon=6.2&unit=mm

      Du kannst auch über diesen link an die Daten kommen https://gadgets.buienradar.nl/data/raintext?lat=51.5&lon=6.2

      000|22:40
      000|22:45
      000|22:50
      000|22:55
      092|23:00
      087|23:05
      092|23:10
      077|23:15
      000|23:20
      087|23:25
      092|23:30
      000|23:35
      087|23:40
      099|23:45
      087|23:50
      000|23:55
      077|00:00
      000|00:05
      000|00:10
      000|00:15
      000|00:20
      000|00:25
      000|00:30
      000|00:35
      

      Hatte mir mal ein script zusammen gebastelt

      const request = require("request");
      
      function updateData() {
        const url = 'https://gadgets.buienradar.nl/data/raintext?lat=51.11&lon=6.15';
        request(url, function(error, response, body) {
          if (error) {
            console.error(error);
            return;
          }
      
          const data = body.split("\n");
          const jsonArray = [];
          data.forEach(item => {
            const [value, label] = item.split("|");
            jsonArray.push({ label, value });
          });
          // Save the JSON data to IO-Broker
          setState("0_userdata.0.JSON.BuienradarRegenin5Minuten", JSON.stringify(jsonArray), true);
      
          let filteredData = jsonArray.filter(function(element) {
            return element.value !== "";
          });
      
          let rainSoon = filteredData.find(function(element) {
            return element.value > 0;
          });
      
       if (rainSoon) {
        setState("0_userdata.0.Wetter.Regen.Beginn", rainSoon.label, true);
        setState("0_userdata.0.Wetter.Regen.Regenmenge", rainSoon.value, true);
        setState("0_userdata.0.Wetter.Regen.Regenbald", true, true);
        setState("0_userdata.0.Wetter.Regen.Regenbaldnächst", false, true);
        
        let nextRain = filteredData.find(function(element, index) {
          return index > filteredData.indexOf(rainSoon) && element.value > 0;
        });
      
        if (nextRain) {
          setState("0_userdata.0.Wetter.Regen.NächsterBeginn", nextRain.label, true);
          setState("0_userdata.0.Wetter.Regen.NächsteRegenmenge", nextRain.value, true);
          setState("0_userdata.0.Wetter.Regen.NächsteEnde", (nextRain.label + nextRain.value * 5 * 60), true);
          setState("0_userdata.0.Wetter.Regen.NächsteDauer", (nextRain.value * 5), true);
          setState("0_userdata.0.Wetter.Regen.Regenbaldnächst", true, true);
        } else {
          setState("0_userdata.0.Wetter.Regen.NächsterBeginn", null, true);
          setState("0_userdata.0.Wetter.Regen.NächsteRegenmenge", null, true);
          setState("0_userdata.0.Wetter.Regen.NächsteEnde", null, true);
          setState("0_userdata.0.Wetter.Regen.NächsteDauer", null, true);
        }
      
        setState("0_userdata.0.Wetter.Regen.Ende", (rainSoon.label + rainSoon.value * 5 * 60), true);
        setState("0_userdata.0.Wetter.Regen.Dauer", (rainSoon.value * 5), true);
      } else {
        setState("0_userdata.0.Wetter.Regen.Beginn", null, true);
        setState("0_userdata.0.Wetter.Regen.Regenmenge", null, true);
        setState("0_userdata.0.Wetter.Regen.Regenbald", false, true);
        setState("0_userdata.0.Wetter.Regen.Regenbaldnächst", false, true);
        setState("0_userdata.0.Wetter.Regen.NächsterBeginn", null, true);
        setState("0_userdata.0.Wetter.Regen.NächsteRegenmenge", null, true);
        setState("0_userdata.0.Wetter.Regen.NächsteEnde", null, true);
        setState("0_userdata.0.Wetter.Regen.NächsteDauer", null, true);
      }
        });
      }
      
      schedule("*/1 * * * *", updateData);
      

      Danke, das sieht etwas praktischer zum Verarbeiten aus. Ich bin mit "Drops" tatsächlich noch nicht viel weiter gekommen, weil am Wochenende mehrere Dinge dazwischen kamem. Werde die kommende Woche weiter testen.

      Vielen herzlichen Dank an euch!

      1 Reply Last reply Reply Quote 0
      • S
        Sleepwalker @Sleepwalker last edited by

        Guten Morgen,

        ich krame dieses alte Thema mal kurz hervor, weil der Drops-Dev vor vielen Monden sein Projekt auf- und danach abgegeben hat. Drops war super, aber läuft aktuell für mich nicht rund genug. Dennoch Kudos an diejenigen, die das Projekt übernommen und wieder lauffähig gemacht haben!

        Nun bin ich wieder über dieses Thema gestolpert und habe sowohl mit Buidenalarm als auch Buidenradar herumgespielt. Allerdings direkt in NodeRed, weil das so schön simpel ist.

        Nun kommen mir 2 Fragen auf:

        1. Hat jemand Erfahrungen mit beiden Adaptern bzgl. deren Genauigkeit? Buidenalarm scheint ja eine bessere Reputation zu haben. Der direkte Vergleich in meinem Kaff weist einige - wenig dramatische - Unterschiede auf. Ich überlege, ob ich vllt. die Daten beider Dienste mittele. Es sei denn jemand sagt jetzt "Dieser Anibeter ist doof" oder "Nur jener hier macht das total toll" 😉

        2. Da ich direkt in NodeRed arbeite, fehlt mir das Logging der Wetterdaten per Adapter-Datenpunkten. Ich habe eine Anbindung an influxDb2, die ich jedoch ungerne selbst beschreiben möchte, weil mir da die Erfahrung fehlt. Kann nur lesen 😄
          Gibt es eine Möglichkeit, wie ich prüfe, ob die "aktuelle" Zeit aus dem Adapter (z.B. "15:45") schon existiert? Und falls nicht, schreibe ich die per ioBroker irgendwie weg? Vllt. über die User-Datenpunkte?

        Vielen Dank und Gruß

        icebear W S 3 Replies Last reply Reply Quote 0
        • icebear
          icebear @Sleepwalker last edited by

          @sleepwalker said in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

          Nun bin ich wieder über dieses Thema gestolpert und habe sowohl mit Buidenalarm als auch Buidenradar herumgespielt. Allerdings direkt in NodeRed, weil das so schön simpel ist.

          Könntest du mir den Node-Red Flow den du verwendest mal zur Verfügung stellen?

          Leider funktioniert bei mir Drops auch nicht oder nicht zuverlässig und das Buienalarm gibt es ja leider nicht als Adapter.
          Buienradar funktioniert bei mir am zuverlässigsten von allen die ich bisher getestet hab, leider nur auf dem Android Handy und ich such schon länger nach einer möglichkeit das in iobroker zu bekommen.

          S 1 Reply Last reply Reply Quote 0
          • W
            warp735 @Sleepwalker last edited by

            @sleepwalker

            Je nachdem wo du wohnst, könnte auch Netatmo für dich interessant sein. Wenn Glück hast und mehrere Stationen in der Nähe sind, kannst sogar sehen woher der Regen kommt.

            1 Reply Last reply Reply Quote 0
            • S
              Sleepwalker @icebear last edited by Sleepwalker

              @icebear Klar. Ist noch nicht der finale Stand, aber nutzbar und vergleichbar ist es. Ich nutze das Dashboard 2.0, falls das Chart bei dir nicht funktioniert.

              flows.json

              Sieht dann so aus:
              rainfall.png

              PS: Bzgl. der Umrechnung in mm bin ich noch sehr unsicher 😄

              @warp735 Danke für den Tip. Kann man da auch genaue Daten abfragen, per API oder so? Muss ich mich dafür anmelden?

              W 1 Reply Last reply Reply Quote 0
              • W
                warp735 @Sleepwalker last edited by

                @sleepwalker
                Gibt n Adapter. Musst nur die ID der Station von der Karte eintragen

                1 Reply Last reply Reply Quote 0
                • S
                  Sleepwalker @Sleepwalker last edited by

                  Zu meiner Frage 2:

                  Ich habe mir provisorisch einen userdata-Datenpunkt angelegt, den ich mit dem "Jetzt-Wert" der Prognose beschreibe. Leider ist das bei unbeständigem Wetter auch nicht wirklich genau. Anhand der Daten möchte ich den Mähroboter nach x Stunden wieder zum Mähen schicken.

                  Bin weiter offen für Alternativen der Historie, die in den APIs nicht so richtig vorhanden ist. Es sei denn, beim buidenalarm sind die ersten Werte die historischen Daten. Denn die Zeiten in deren API fangen immer leicht in der Vergangenheit an. Weiß da jemand genaueres?

                  Danke und Gruß

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    Sleepwalker @Sleepwalker last edited by Sleepwalker

                    Mangels Alternativen werde ich wohl erst einmal dabei bleiben, alle 5 Minuten den aktuellen Regen in die DB zu schreiben. Buidenradar ist derzeit noch mein Favorit, weil genauer.

                    Aber mir tut sich immer noch ein Verständnisproblem auf. Die Werte der APIs sind scheinbar in "mm" angegeben. Und zwar für 5-Minuten-Abschnitte. Aber auf welche Zeit beziehen sich die mm?

                    Nehmen wir z.B. den Wert "96", der wird für das aktuelle Wetter bei mir angezeigt. Wirklich nur leichter Regen. Heißt das nun, wenn es so regnet, dann fallen in 5 Minuten 92mm herunter? Das kann ja nicht sein. Ist der Wert auf 1h bezogen? Das würde jedenfalls für mein Verständnis sinnvoller erscheinen. Dann würden in 1h nach Adam Ries 8mm Regen fallen (96 : 12 = 8), sollte der Regen für 60 Minuten beständig bleiben.

                    1. Frage: Auf was beizhene sich die "mm"?

                    2. Frage: Ich möchte mit Influx die Historie abfragen. Die Abfrage aggregiere ich über 1h:

                    import "date"
                    import "timezone"
                    option location = timezone.location(name: "Europe/Berlin")
                    
                    from(bucket: "iobroker")
                      |> range(start: -24h)
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Weather.currentRain_mm")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> aggregateWindow(every: 60m, fn: sum, createEmpty: true)
                      |> yield(name: "sum")
                    

                    Gesetz dem Fall, dass meine obige Annahme richtig ist, müsste die "sum"-Funktion hier wieder die richtigen Werte auf Stundenbasis ausspucken. Richtig? 😄

                    Im Moment sieht das ganze ca. so aus:
                    regen.png

                    Ro75 Codierknecht 2 Replies Last reply Reply Quote 0
                    • Ro75
                      Ro75 @Sleepwalker last edited by

                      @sleepwalker ich nutze den netatmo crawler. Such dir eine Wetterstation mit Bierschlagsmessung in deinem Umfeld raus. Mache ich auch so und das passt, zumindest bei mir.

                      Ro75

                      S 1 Reply Last reply Reply Quote 1
                      • Codierknecht
                        Codierknecht Developer Most Active @Sleepwalker last edited by

                        @sleepwalker sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                        z.B. den Wert "96", der wird für das aktuelle Wetter bei mir angezeigt

                        Das ist deren eigener Wert. Was auch immer der darstellen soll.
                        Um das in mm/h zu erhalten, musst Du noch die Formel darüber jagen:
                        10 ^ (Wert-109)/32

                        Marc Berg 1 Reply Last reply Reply Quote 1
                        • Marc Berg
                          Marc Berg Most Active @Codierknecht last edited by Marc Berg

                          @codierknecht sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                          Was auch immer der darstellen soll.

                          Das ist ein logarithmischer Wert. Auf diese Weise hat man eine hohe Auflösung bei geringen Regenintensitäten und kann den Speicherbedarf trotzdem kompakt halten.

                          Codierknecht 1 Reply Last reply Reply Quote 2
                          • Codierknecht
                            Codierknecht Developer Most Active @Marc Berg last edited by

                            @marc-berg sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                            Das ist ein logarithmitscher Wert

                            ... den die wohl nach Gutdünken gewählt haben.

                            Mit

                            Was auch immer der darstellen soll

                            meinte ich eher, dass da keine spezifische Einheit dazugehört.

                            1 Reply Last reply Reply Quote 0
                            • S
                              Sleepwalker @Ro75 last edited by

                              @ro75 said in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                              @sleepwalker ich nutze den netatmo crawler. Such dir eine Wetterstation mit Bierschlagsmessung in deinem Umfeld raus. Mache ich auch so und das passt, zumindest bei mir.

                              Ro75

                              Prost 🙂
                              Danke, ich habe den Crawler auch ausprobiert, habe ihn aber mangels Regenvorhersage wieder ignoriert. Für den Regenwert könnte ich den tatsächlich nochmal mit in die Auswahl nehmen. Aber irgendwie wirkt das für mich etwas vage, was die korrekte Messung angeht. Ich weiß ja schließlich nicht, ob Max Mustermann seine Station sinnvoll irgendwohin gestellt hat. So viele sind hier nicht in direkter Nähe. Und es haben auch leider nicht alles die 🍺-schlagsmessung.

                              @Codierknecht
                              Danke, die Formel lag ja auch schon weiter oben herum. Was mich irritiert hat: In Buidenalarm ist als Einheit in der URL "mm" angegeben und die Werte stimmen mir Buidenradar mehr oder weniger überein. Wenn man allerdings die "&unit=mm" aus der URL heraus lässt, dann ändert sich: genau nix.

                              Aber dann nochmal zum Mitschreiben: Wenn ich jetzt einen umgerechneten Wert mm/h habe, der aber alle 5 Minuten angegeben wird, ist dann gemeint, dass der Regen für 60 Minuten genau so stark bleiben müsste, damit die mm/h "stimmen"? Dann könnte ich im Influx statt "sum" einfach "mean" verwenden. Richtig?

                              @Marc-Berg
                              Danke für die Ausführung, mein mathematisches Verständnis ist etwas eingerostet, aber ich meine zu verstehen 😄

                              Codierknecht 1 Reply Last reply Reply Quote 0
                              • Codierknecht
                                Codierknecht Developer Most Active @Sleepwalker last edited by

                                @sleepwalker sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                                ist dann gemeint, dass der Regen für 60 Minuten genau so stark bleiben müsste, damit die mm/h "stimmen"? Dann könnte ich im Influx statt "sum" einfach "mean" verwenden. Richtig?

                                So verstehe ich das auch. Mit "mean" sollte der Wert einigermaßen passen.
                                Du kannst natürlich auch jeweils zur vollen Stunde die nächsten 12 Werte nehmen, die Regenmeng der Einzelwerte durch 12 teilen und summieren. Ob das dann aber besser ist als der Mittelwert, müsste man einfach mal ausprobieren.

                                M S 2 Replies Last reply Reply Quote 1
                                • M
                                  masterkey @Codierknecht last edited by

                                  Hi Zusammen,

                                  ich versuche auch gerade den netatmo-crawler zu installieren. Beim Installationsversuch kommt die Meldung:

                                  Invalid version of admin. Required >=7.4.10. Current 7.0.11

                                  wie bekomme ich denn die Admin Version auf 7.4.10.

                                  Hier mein aktuelles Setup auf meinem Raspberry PI:

                                  /usr/bin/nodejs v20.19.4
                                  /usr/bin/node v20.19.4
                                  /usr/bin/npm 10.8.2
                                  /usr/bin/npx 10.8.2
                                  /usr/bin/corepack 0.32.0

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @masterkey last edited by

                                    @masterkey sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                                    Hier mein aktuelles Setup

                                    bitte die Langfassung von iob diag in code-tags posten

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      Sleepwalker @Codierknecht last edited by Sleepwalker

                                      @codierknecht Ich habe erst jetzt wieder Zeit gefunden. Meinst du, die Werte zwischen Buidenalarm und Buidenradar sind grundsätzlich gleich zu interpretieren? Die weichen nach meinen Daten bis jetzt nicht sehr start voneinander ab.
                                      Aber: Die Werte tabellarisch umgerechnet würden folgende "mm"-Werte ergeben:

                                      API-Wert	mm/u		mm/h
                                      10		0,0008058	0,0096696
                                      20		0,0016548	0,0198576
                                      30		0,0033982	0,0407784
                                      40		0,0069783	0,0837396
                                      50		0,0143301	0,1719612
                                      60		0,0294272	0,3531264
                                      70		0,0604296	0,7251552
                                      80		0,1240937	1,4891244
                                      90		0,2548296	3,0579552
                                      100		0,5232991	6,2795892
                                      110		1,0746078	12,8952936
                                      120		2,2067340	26,4808080
                                      130		4,5315836	54,3790032
                                      140		9,3057204	111,6686448
                                      150		19,1095290	229,3143480
                                      

                                      Für mich sehen die Werte
                                      a) eher unrealistisch aus, bis jetzt schwankten die API-Werte meist zwischen 70 und 130 und
                                      b) bei höheren API-Werten tatsächlich extrem wenig granular, als bei einer nicht-logarithmischen Notation (sofern man keine Ganzzahlen nehmen würde sondern bspw. bei 2 Nachkommastellen bliebe)

                                      Falls hier jemand ist, der da genaueres zu weiß, bin ich für alle Hinweise dankbar.

                                      Marc Berg 1 Reply Last reply Reply Quote 0
                                      • Marc Berg
                                        Marc Berg Most Active @Sleepwalker last edited by Marc Berg

                                        @sleepwalker sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                                        Falls hier jemand ist, der da genaueres zu weiß,

                                        Die Daten, die die API rausgibt sind schon auf mm/h hochgerechnet!

                                        Quelle:

                                        https://www.buienradar.nl/overbuienradar/gratis-weerdata

                                        "Op basis van de door u gewenste coördinaten (latitude en longitude) kunt u de neerslag tot twee uur vooruit ophalen in tekstvorm. De data wordt iedere 5 minuten geüpdatet. Op deze pagina kunt u de neerslag in tekst vinden. De waarde 0 geeft geen neerslag aan (droog), de waarde 255 geeft zware neerslag aan. Gebruik de volgende formule voor het omrekenen naar de neerslagintensiteit in de eenheid millimeter per uur (mm/u): Neerslagintensiteit = 10^((waarde-109)/32)"

                                        "Basierend auf den von Ihnen gewünschten Koordinaten (Breiten- und Längengrad) können Sie die Niederschlagsvorhersage für bis zu zwei Stunden im Voraus in Textform abrufen. Die Daten werden alle 5 Minuten aktualisiert. Auf dieser Seite finden Sie die Niederschlagsdaten als Text. Der Wert 0 bedeutet kein Niederschlag (trocken), der Wert 255 steht für starken Niederschlag. Verwenden Sie die folgende Formel, um den Wert in die Niederschlagsintensität in Millimeter pro Stunde (mm/h) umzurechnen:"

                                        EDIT: und dann sind Werte zwischen 70 und 130 ziemlich passend, oder?

                                        Codierknecht S 2 Replies Last reply Reply Quote 1
                                        • Codierknecht
                                          Codierknecht Developer Most Active @Marc Berg last edited by

                                          @marc-berg sagte in Adapter, um nahenden & aktuellen Niederschlag zu erkennen:

                                          EDIT: und dann sind Werte zwischen 70 und 130 ziemlich passend, oder?

                                          Insbesondere mit deren Hinweis:

                                          Ter controle: een waarde van 77 is gelijk aan een neerslagintensiteit van 0,1 mm/u.

                                          Zur Kontrolle: Ein Wert von 77 entspricht einer Niederschlagsintensität von 0,1 mm/h.

                                          1 Reply Last reply Reply Quote 1
                                          • S
                                            Sleepwalker @Marc Berg last edited by Sleepwalker

                                            @marc-berg @Codierknecht
                                            Danke vielmals! Ich war auf der Seite auch schon mit dem Übersetzer unterwegs, habe die Informationen aber leider nicht gefunden. Super 🙂

                                            Und ja, die Werte für 70-130 passen in der mittleren Spalte um einiges besser, wenn man sie als mm/h annimmt 😄

                                            Herzlichen Dank!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            756
                                            Online

                                            32.0k
                                            Users

                                            80.3k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            29
                                            1384
                                            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