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

  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Pollenflug

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

Pollenflug

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
pollenflug javascript request
3 Beiträge 2 Kommentatoren 338 Aufrufe 2 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.
  • padroneP Offline
    padroneP Offline
    padrone
    schrieb am zuletzt editiert von
    #1

    Re: Wunsch: Pollenflug-(Adapter/wasauchimmer)

    Hallo, hat noch jemand das Script von steinwedel?
    Irgendwie habe ich das Gefühl, das es durch das neue Forum zerstört wurde.

    Besten Dank
    Jan

    1 Antwort Letzte Antwort
    0
    • BBTownB Offline
      BBTownB Offline
      BBTown
      schrieb am zuletzt editiert von
      #2

      Meinst Du dieses Script?

      ```
      // ########################################################################################################
      // Polleninfo auswerten heute und die nächsten Tage
      // Version 1.4
      // Achtung: javascript Variante ist "TypeScript"
      // ########################################################################################################

      /**************************************************************************************************

      • Initiale Optionen
        **************************************************************************************************/
        interface iRequestOptions {
        url: string;
        headers: any;
        }

      var baseUrl: string = "https://www.wetteronline.de/pollen/bad-bramstedt";
      var baseObjPath: string = 'wetter.pollenvorhersage';

      /**************************************************************************************************

      • Globale TypeScript Definitionen
        *************************************************************************************************/
        // -----------------------------------------------------------------------------
        /
        Die folgenden Funktionen sind bei mir in einem globalen script.
        Wenn man diese global definieren will, muss man das lokal referenzieren mit:
        declare function isPrimitive(obj:any):boolean
        declare function logDebug(...param: any[]):void;
        declare function logInfo(...param: any[]):void;
        declare function logWarning(...param: any[]):void;
        declare function logError(...param: any[]):void;
        */

      /**

      • Function for check if a object is a primitive object (string, number, etc)
      • @param obj any object to check if it is a primitive object
      • @returns boolean which is true if object in parameter is a primitive object
        */
        function isPrimitive(obj:any):boolean {
        return (obj !== Object(obj));
        }

      /**

      • write any objects given as parameter to log as debug

      • @param param a nist of different objects
        /
        function logDebug(...param: any[]):void {
        if (arguments.length > 0) {
        var text:string[] = [];
        for (var i = 0; i < arguments.length; i++) {
        if (typeof arguments[i] === 'string' || arguments[i] instanceof String) {
        text.push(arguments[i]);
        } else if(arguments[i] === null) {
        text.push('null');
        } else if(arguments[i] === undefined) {
        text.push('undefined');
        } else if (isPrimitive(arguments[i])) {
        text.push(arguments[i]);
        } else {
        text.push(JSON.stringify(arguments[i]));
        }
        //enum close bracket cannot be found in "channel[state.id=
        .TEMPERATURE](rooms=WZ|Wohnung|Wohnzimmer"

        }
        log(text.join(' '), 'debug');
        }
        }

      /**

      • write any objects given as parameter to log as Information

      • @param param a nist of different objects
        /
        function logInfo(...param: any[]):void {
        if (arguments.length > 0) {
        var text:string[] = [];
        for (var i = 0; i < arguments.length; i++) {
        if (typeof arguments[i] === 'string' || arguments[i] instanceof String) {
        text.push(arguments[i]);
        } else if(arguments[i] === null) {
        text.push('null');
        } else if(arguments[i] === undefined) {
        text.push('undefined');
        } else if (isPrimitive(arguments[i])) {
        text.push(arguments[i]);
        } else {
        text.push(JSON.stringify(arguments[i]));
        }
        //enum close bracket cannot be found in "channel[state.id=
        .TEMPERATURE](rooms=WZ|Wohnung|Wohnzimmer"

        }
        log(text.join(' '), 'info');
        setState("javascript.0.Ereignisliste.event",'INFO|'+text.join(' '));
        }
        //logEnhanced(logtext, 'info');
        //console.debug(p);
        //logs(logtext,loglevels.debug);
        }

      /**

      • write any objects given as parameter to log as warning

      • @param param a nist of different objects
        /
        function logWarning(...param: any[]):void {
        if (arguments.length > 0) {
        var text:string[] = [];
        for (var i = 0; i < arguments.length; i++) {
        if (typeof arguments[i] === 'string' || arguments[i] instanceof String) {
        text.push(arguments[i]);
        } else if(arguments[i] === null) {
        text.push('null');
        } else if(arguments[i] === undefined) {
        text.push('undefined');
        } else if (isPrimitive(arguments[i])) {
        text.push(arguments[i]);
        } else {
        text.push(JSON.stringify(arguments[i]));
        }
        //enum close bracket cannot be found in "channel[state.id=
        .TEMPERATURE](rooms=WZ|Wohnung|Wohnzimmer"

        }
        log(text.join(' '), 'warn');
        setState("javascript.0.Ereignisliste.event",'WARN|'+text.join(' '));
        }
        //logEnhanced(logtext, 'warn');
        //console.warn(p);
        //logs(logtext,loglevels.warn);
        }

      /**

      • write any objects given as parameter to log as error

      • @param param a nist of different objects
        /
        function logError(...param: any[]):void {
        if (arguments.length > 0) {
        var text:string[] = [];
        for (var i = 0; i < arguments.length; i++) {
        if (typeof arguments[i] === 'string' || arguments[i] instanceof String) {
        text.push(arguments[i]);
        } else if(arguments[i] === null) {
        text.push('null');
        } else if(arguments[i] === undefined) {
        text.push('undefined');
        } else if (isPrimitive(arguments[i])) {
        text.push(arguments[i]);
        } else {
        text.push(JSON.stringify(arguments[i]));
        }
        //enum close bracket cannot be found in "channel[state.id=
        .TEMPERATURE](rooms=WZ|Wohnung|Wohnzimmer"

        }
        log(text.join(' '), 'error');
        setState("javascript.0.Ereignisliste.event",'ERROR|'+text.join(' '));
        }
        }
        // ########################################################################################################
        // Lokale TypeScript Definitionen
        // ########################################################################################################
        import request = require("request");

      var Pollenarten:string[] = ['Erle','Hasel','Pappel','Weide','Ulme','Birke','Buche','Ampfer','Roggen','Gräser','Eiche','Wegerich','Beifuß','Ambrosia'];
      var tageVorhersage = ['d0','d1','d2','d3','d4','d5'];
      var tageVorhersageName = ['heute','morgen','übermorgen','heute + 3','heute + 4','heute + 5'];

      function stripTags(data:string):string {
      return data.replace(/( |<([^>]+)>)/ig, "");
      }

      function getDate(days: number): string { // Eingabe 0, 1, 2, ...
      var jetzt = new Date();
      jetzt.setHours(0);
      jetzt.setMinutes(0);
      jetzt.setSeconds(0);
      jetzt.setMilliseconds(0);
      var newdate = new Date();
      newdate.setTime(jetzt.getTime() + (24 * 60 * 60 * 1000 * days) ); // heute + anzahl tage ins Millisekunden
      var date :string = newdate.getDate().toString();
      var month: string = (newdate.getMonth()+1).toString();
      var year: string = newdate.getFullYear().toString();
      date = (date.length < 2) ? '0' + date : date;
      month = (month.length < 2) ? '0' + month : month;
      var result:string = year+month+date;
      logDebug('Datum in Link: ', result);
      return (result); // Ausgabe z.B. 20160506
      }

      function GetPollenIndex(pflanze:string, html:string):number {
      var code ={'kein':0, 'schwach':1, 'mäßig':2, 'stark':3};
      var result:string= "";
      var start:number =html.indexOf(pflanze)+pflanze.length;

      result=html.slice(start);
      result=result.trim();
      

      //logDebug('result for ',pflanze,html.slice(0,600));
      var stop:number =result.indexOf(' ');
      result=result.slice(0,stop);
      logDebug('pflanze=',pflanze,'code=',result);
      return code[result];
      }

      function initializePollenwetter(baseObj:string, name:string):void {
      createState(baseObj,0,false, {
      name: name,
      type: "string",
      role: 'json',
      read: true,
      write: false});

      for(var i=0;i<Pollenarten.length;i++) {
        createState(baseObj + '.' + Pollenarten[i].toLowerCase(),0,false, {
           name: 'Pollenart '+ Pollenarten[i],
           type: "number",
           role: 'value',
           read: true,
           write: false});
      }
      

      }

      function removeOldPollenwetter():void {
      for(var i=0;i<Pollenarten.length;i++) {
      deleteState(baseObjPath + '.' + Pollenarten[i].toLowerCase());
      }
      }

      function readPollenwetterForDay(day:number, baseObj:string):void {
      logDebug("Start");
      try {
      var options:iRequestOptions = {
      url: ((day>0) ? baseUrl + '?fcdatstr=' + getDate(day) : baseUrl), // korrekten Link erstellen ,
      headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
      }
      };
      request(options, function (error, response, body):void {
      if (!error && response.statusCode == 200) { // kein Fehler, Inhalt in body
      body=body.replace(/\t/g, ' ');
      body=body.replace(/(\n|\r)/g, '');
      var start:number =body.indexOf('<ul id="pollentable">');
      if (start>-1) { body=body.slice(start); }
      body=stripTags(body);
      //logDebug('body',body);
      let pobj:any = {};
      for(let i=0;i<Pollenarten.length;i++) {
      let pi:number = GetPollenIndex(Pollenarten[i],body);
      pobj[Pollenarten[i].toLowerCase()] = pi;
      setState(baseObj+'.'+Pollenarten[i].toLowerCase(),pi);
      }
      setState(baseObj,JSON.stringify(pobj));
      } else {
      logInfo("StatusCode="+response.statusCode);
      logError(error); // Error beim Einlesen
      }
      });
      } catch (e) {
      logError('Fehler (try) leseWebseite: ' + e);
      }
      }

      function readPollenwetter() {
      for (let d:number = 0; d < tageVorhersage.length; d++) {
      let path: string = baseObjPath + '.' + tageVorhersage[d];
      initializePollenwetter(path, tageVorhersageName[d]);
      readPollenwetterForDay(d, path);
      }
      }

      removeOldPollenwetter();
      readPollenwetter();
      schedule("5 0 * * *", readPollenwetter);

      [/s]

      ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

      1 Antwort Letzte Antwort
      0
      • padroneP Offline
        padroneP Offline
        padrone
        schrieb am zuletzt editiert von
        #3

        Ja, vielen Dank

        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
        FAQ Cloud / IOT
        HowTo: Node.js-Update
        HowTo: Backup/Restore
        Downloads
        BLOG

        268

        Online

        32.4k

        Benutzer

        81.4k

        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