Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Biowetter aus WetterOnline (wie Pollenflug)

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.8k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    737

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

Biowetter aus WetterOnline (wie Pollenflug)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
62 Beiträge 14 Kommentatoren 10.5k Aufrufe 12 Beobachtet
  • Ä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.
  • SBorgS Offline
    SBorgS Offline
    SBorg
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #61

    Brauchst gar nicht zu testen, viele Seiten bringen einen "404-Fehler", sind also nicht erreichbar. Offenbar funktioniert die interne Umleitung bei denen nicht immer.

    Neue Version, getestet mit zwei Städten:

    /* Biowetter Parser von gesundheit.de
    
    https://forum.iobroker.net/topic/4441/biowetter-aus-wetteronline-wie-pollenflug/61
    
    05.05.2016 erstellt von steinwedel für homoran
    06.05.2016 Anpassung durch pix (Vorhersage mehrere Tage)
    
    Änderung in Biowetterparser
    12.01.2017 Biowetter
    14.01.2017 vom Pollenflug Skript separiert
    10.06.2019 neue Quellseite www.gesundheit.de (Anpassung von pix)
    21.12.2021 (SBorg) Anpassungen an neuen HTML-Auftritt, Fehlerbeseitigung, request => axios, ack=true
    11.07.2022 (SBorg) Anpassungen an neuen HTML-Auftritt
    11.06.2024 (SBorg) Anpassung an JS 6.x und Umstellung von "axios" => "httpGet"
    28.01.2026 (SBorg) Umstellung auf URL-IDs, Änderung der URL, Timeout erhöht
    
    */
    
    const pfad = "0_userdata.0.Wetter.Biowetter.";
    const logging = false;
    
    // Städte können natürlich auch gelöscht werden. Die benötigte URL gibt es hier: https://www.gesundheit.de/biowetter-id213002/
    const stadt = [
        // Hessen     
        { "URL_" : "frankfurt-am-main-id213038/",
          "name" : "Frankfurt am Main" },
        // Baden-Württemberg    
        { "URL_" : "mannheim-id215733/",
          "name" : "Mannheim" }  
    ];
    
     
    // ab hier nix mehr ändern
    const biowetter_url = "https://www.gesundheit.de/biowetter/";
    const biodatenpunkte = ["heute", "morgen", "Kombi"];
    
    //const axios = require('axios');
     
    function bioDpAnlegen() {
        // alle Städte durchgehen
        stadt.forEach(function(city) {
            let bio_pfad = pfad + city.name.toLowerCase();
            setTimeout(function() {
                for (var bdp = 0; bdp < biodatenpunkte.length; bdp++) {
                    createState(bio_pfad + "." + biodatenpunkte[bdp], {
                        def: "",
                        name: "Biowetter " + city.name + " " + biodatenpunkte[bdp],
                        desc: "Biowetter Vorhersage (gesundheit.de) für " + biodatenpunkte[bdp] + " in " + city.name,
                        type: "string"
                    });
                }
            }, 1000);
        });
    }
     
    function readBiowetter() {
        stadt.forEach(function(s) {
            setTimeout(function() {
                if (logging) log("Es wird abgefragt: " + s.URL_ + " für " + s.name);
                readURL(s.URL_, s.name);
            }, 10000);
        });
    }
     
    function readURL(stadt_URL_, stadt_name) {
        try {
            const options = {
                method: 'get',
                url: biowetter_url + stadt_URL_, // korrekten Link erstellen
                headers: { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1" }
            };
            //axios(options).then(function (response) {
            httpGet(options.url, (err, response) => { 
                if (response.statusCode == 200) { // kein Fehler, Inhalt in body
                    /* betroffener HTML Code
                                <h2>Heute</h2>
                                <p>Die aktuelle Wetterlage belastet Herz und Kreislauf stärker als sonst üblich. Aufgrund der warmen Luftmasse ist die Durchblutung vermindert. Viele Menschen fühlen sich weiterhin müde und abgespannt. Trotzdem fällt der erholsame Tiefschlaf schwer. Menschen, die verstärkt mit Kopfschmerzen und Migräneattacken auf Wetterreize reagieren, sollten ihre Schmerzmittel nicht vergessen. Anstrengungen am Mittag und Nachmittag sollten vermieden werden.</p>
                                <h2>Morgen</h2>
                                <p>Mit der Witterung sind häufig Leistungs- und Konzentrationsdefizite verbunden. Auch das Reaktionsvermögen lässt nach, sodass die Unfallgefahr zunimmt. Wetterfühlige Menschen klagen vor allem über Kopfweh und eine erhöhte Müdigkeit.</p>
    
                                <div class="
                         */
    
                    // Code für HEUTE extrahieren
     
                    let wetter_heute;
                    let heute_start = "<h3>Heute</h3>";
                    let heute_ende = "<h3>Morgen</h3>"; // dazwischen ist Text für heute
     
                    let pos_heute_start = response.data.indexOf(heute_start);
                    let pos_heute_ende = response.data.indexOf(heute_ende);
                    log("Start: " + pos_heute_start + " Ende: " + pos_heute_ende, "debug");
     
                    if (pos_heute_start != -1 && pos_heute_ende != -1) { // wenn gesuchte Strings überhaupt existieren
                        let heute_bereich = response.data.substring(pos_heute_start + heute_start.length, response.data.length); // Ab aber ohne ersten Treffer bis Ende
                        heute_bereich = heute_bereich.substring(0, heute_bereich.indexOf(heute_ende)); // Suchwort am Ende abschneiden
                        wetter_heute = strip_tags(heute_bereich).trim(); // fertige Ausgabe
                        if (logging) log("Biowetter in " + stadt_name + " (heute): " + wetter_heute);
                        setState(pfad + stadt_name.toLowerCase() + ".heute", wetter_heute, true);
                    } else log("gesuchter Quellcode (www.gesundheit.de) nicht gefunden | Stichwort 'heute'", "error");
     
                    // Code für MORGEN extrahieren
                    let wetter_morgen;
                    let morgen_start = "<h3>Morgen</h3>";
                    let morgen_ende = "<div class="; // dazwischen ist Text für morgen 
                    let pos_morgen_start = response.data.indexOf(morgen_start);
                    let pos_morgen_ende = response.data.indexOf(morgen_ende);
                    log("Start: " + pos_morgen_start + " Ende: " + pos_morgen_ende, "debug");
     
                    if (pos_morgen_start != -1 && pos_morgen_ende != -1) { // wenn gesuchte Strings überhaupt existieren
                        let morgen_bereich = response.data.substring(pos_morgen_start + morgen_start.length, response.data.length); // Ab aber ohne ersten Treffer bis Ende
                        morgen_bereich = morgen_bereich.substring(0, morgen_bereich.indexOf(morgen_ende)); // Suchwort am Ende abschneiden
                        wetter_morgen = strip_tags(morgen_bereich).trim(); // fertige Ausgabe
                        if (logging) log("Biowetter in " + stadt_name + " (morgen): " + wetter_morgen);
                        setState(pfad + stadt_name.toLowerCase() + ".morgen", wetter_morgen, true);
                    } else log("gesuchter Quellcode (www.gesundheit.de) nicht gefunden | Stichwort 'morgen'", "error");
     
                    // Code für Kombidatenpunkt mit HTML
                    if (!wetter_morgen || !wetter_heute) log("Fehler: keine Biowetterdaten extrahiert", "error");
                    else {
                        let kombi = "<div class =\"Biowetter\">" +
                            "<h4>Biowetter (gesundheit.de) für " + stadt_name + "</h4>" +
                            "<h2>Heute</h2>" +
                            "<p>" + wetter_heute + "</p>" +
                            "<h2>Morgen</h2>" +
                            "<p>" + wetter_morgen + "</p></div>";
                        setState(pfad + stadt_name.toLowerCase() + "." + biodatenpunkte[2], kombi, true);
                    }
                } else {
                    log("StatusCode = " + response.statusCode);
                }
            });
        } catch (e) {
            log("Fehler (try) leseWebseite (gesundheit.de): " + e, "error");
        }
        log("Biowetter eingelesen", "info");
    }
     
    function strip_tags(data) {
        var rueckgabe = data.replace(/(&nbsp;|<([^>]+)>)/ig, " ");
        return (rueckgabe);
    }
     
    String.prototype.replaceAll = function(find, replace) {
        var str = this;
        return str.replace(new RegExp(find.replace(/([.*+?^=!:${}()|[]\/])/g, "\\$1"), "g"), replace);
    };
     
    function main() {
        bioDpAnlegen();
        setTimeout(readBiowetter, 3000);
    }
     
    main();
    schedule("6 6 * * *", main);
     
    

    LG SBorg ( SBorg auf GitHub)
    Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

    1 Antwort Letzte Antwort
    1
    • jvfleJ Offline
      jvfleJ Offline
      jvfle
      schrieb am zuletzt editiert von
      #62

      Vielen Dank für die zusätzliche Arbeit, die du dir extra gemacht hast. Die Anzeige funktioniert jetzt. BG

      1 Antwort Letzte Antwort
      0

      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

      Registrieren Anmelden
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      505

      Online

      32.9k

      Benutzer

      83.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