Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Wunsch: Pollenflug-(Adapter/wasauchimmer)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Wunsch: Pollenflug-(Adapter/wasauchimmer)

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

      Hallo, ich habe die Zeile mit Pollen in Dresen noch ausgetauscht.

      Aber ich bekomme folgende Log Fehlermeldungen:

      javascript.1	2018-01-21 13:05:40.127	error	ERROR: Property 'replaceAll' does not exist on type 'String'.
      javascript.1	2018-01-21 13:05:40.127	error	^
      javascript.1	2018-01-21 13:05:40.127	error	String.prototype.replaceAll = function(this: string, find: string, replace: string): string {
      javascript.1	2018-01-21 13:05:40.127	error	script.js.Test.Pollen_test: TypeScript compilation failed:
      javascript.1	2018-01-21 13:05:40.112	info	script.js.Test.Pollen_test: compiling TypeScript source...
      
      
      1 Reply Last reply Reply Quote 0
      • R
        robsdobs last edited by

        Danke für die Rückmeldung. Ich habe das Script oben nochmal angepasst.

        1 Reply Last reply Reply Quote 0
        • D
          DiJaexxl last edited by

          Hallo,

          mmmmmh. Mache ich was Falsch?

          Das wirft mein Logfile raus:

          javascript.0	2018-01-26 19:50:35.479	error	ERROR: Property 'replaceAll' does not exist on type 'String'.
          javascript.0	2018-01-26 19:50:35.479	error	^
          javascript.0	2018-01-26 19:50:35.479	error	String.prototype.replaceAll = function(this: string, find: string, replace: string): string {
          javascript.0	2018-01-26 19:50:35.479	error	ERROR: Property 'replaceAll' does not exist on type 'String'.
          javascript.0	2018-01-26 19:50:35.479	error	^
          javascript.0	2018-01-26 19:50:35.479	error	if (typeof String.prototype.replaceAll === 'undefined') {
          javascript.0	2018-01-26 19:50:35.479	error	script.js.Test.Pollen_test: TypeScript compilation failed: 
          

          Ergebnisse kommen aber leider nicht raus

          1 Reply Last reply Reply Quote 0
          • I
            ioTechnik last edited by

            Hallo robsdobs

            Ich habe das gleiche Problem wie DiJaexxl. Dabei hoffte ich, dass Dein Script angepasst ist, wie Du beschrieben hast.

            Ist es das Script aus Beitrag oben

            http://forum.iobroker.net/viewtopic.php … 40#p115126

            Geht bei mir leider nicht

            Wäre sehr dankbar für weitere Unterstützung

            Habe das für Testzwecke auf nem Pi1. Der neue kommt erst heute.

            1 Reply Last reply Reply Quote 0
            • R
              robsdobs last edited by

              Ok, schaue ich mir heute Abend an.

              Gesendet von meinem A0001 mit Tapatalk

              1 Reply Last reply Reply Quote 0
              • K
                Knusterus last edited by

                hallo

                Ich hänge mich mal mit rein. Ich scheitere leider schon beim Enginetyp. Bei mir steht nur "Blocky, Javascript und Coffeescript.

                So habe jetzt den JS. Adapter aktualisiert jetzt habe ich auch Typescript.

                Jetzt habe ich den Pollenteil unter Common in ein neues Skript eigefügt. Und bekomme folgenden Fehler.

                `Log
                17:57:20.989	[info]	javascript.0 script.js.common.Pollen: compiling TypeScript source...
                17:57:20.989	[error]	javascript.0 script.js.common.Pollen: TypeScript compilation failed: createStateG("wetter.pollenvorhersage."+Pollenarten[i].toLowerCase(),0,'number','value','Pollenart '+Pollenarten[i]); ^ ERROR: Cannot find name 'createStateG'. Did you mean 'createState'? request(options, function (error, response, body):void { ^ ERROR: Cannot find name 'request'. Did you mean 'Request'? logInfo("StatusCode="+response.statusCode); ^ ERROR: Cannot find name 'logInfo'. logError(error); // Error beim Einlesen ^ ERROR: Cannot find name 'logError'. Did you mean 'onerror'? logError('Fehler (try) leseWebseite: ' + e); ^ ERROR: Cannot find name 'logError'. Did you mean 'onerror'?` 
                
                Hier noch mal mein Script.
                
                `~~[code]~~var Pollenarten:string[] = ['Erle','Hasel','Pappel','Weide','Ulme','Birke','Buche','Ampfer','Roggen','Gräser','Eiche','Wegerich','Beifuß','Ambrosia'];
                
                var options = {
                  url: "https://www.wetteronline.de/pollen/bad-arolsen",
                  headers: {
                    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
                  }
                };
                
                function strip_tags(data:string):string {
                    var rueckgabe:string = data.replace(/( |<([^>]+)>)/ig, "");
                    return(rueckgabe);
                }
                
                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():void {
                    for(var i=0;i<pollenarten.length;i++) {/createstateg("wetter.pollenvorhersage."+pollenarten[i].tolowercase(),0,'number','value','pollenart/'+pollenarten[i]);/}/readpollenwetter();/function/readpollenwetter():void/logdebug("start");/try/request(options,/(error,/response,/body):void/if/(!error/&&/response.statuscode="=" 200)/kein/fehler,/inhalt/in/body/");/var/start:number="body.indexOf('<ul" id="pollentable">');
                            if (start>-1) { body=body.slice(start); }
                                body=strip_tags(body);
                            //logDebug('body',body);
                                for(var i=0;i<pollenarten.length;i++) 0/5/{/setstate("wetter.pollenvorhersage."+pollenarten[i].tolowercase(),getpollenindex(pollenarten[i],body));/}/else/loginfo("statuscode="+response.statusCode);
                                logError(error);                               // Error beim Einlesen
                            }
                        });
                    } catch (e) {
                        logError('Fehler (try) leseWebseite: ' + e);
                    }
                }
                
                initializePollenwetter();
                schedule(" */*",/readpollenwetter);<e=""></pollenarten.length;i++)></pollenarten.length;i++)>`
                
                Bitte um Hilfe
                
                Knusterus[/i][/i][/i][/i][/code][/i][/i]
                
                1 Reply Last reply Reply Quote 0
                • R
                  robsdobs last edited by

                  @ioTechnik und @DiJaexxl mir ist zwar nicht ganz klar wo der Fehler herkommt, ich habe jetzt eine Version ohne replaceAll erstellt.

                  @Knusterus: In deinem Script fehlen die Grundfunktionen. Probiere Bitte auch mal dieses Script.

                  `// ########################################################################################################
                  // Polleninfo auswerten
                  // Version 1.3
                  // ########################################################################################################
                  
                  /**************************************************************************************************
                  * Initiale Optionen
                  **************************************************************************************************/
                  
                  var options = {
                    url: "https://www.wetteronline.de/pollen/bad-arolsen",
                    headers: {
                      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
                    }
                  };
                  
                  /**************************************************************************************************
                  * 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'];
                  
                  function strip_tags(data:string):string {
                      var rueckgabe:string = data.replace(/( |<([^>]+)>)/ig, "");
                      return(rueckgabe);
                  }
                  
                  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():void {
                      logDebug('initialize Pollenwetter, creating states');
                      for(var i=0;i<pollenarten.length;i++) {/createstate("wetter.pollenvorhersage."+pollenarten[i].tolowercase(),0,false,/name:/'pollenart/'+/pollenarten[i],/type:/"number",/role:/'value',/read:/true,/write:/false});/}/logdebug('initiale/read');/readpollenwetter();/function/readpollenwetter():void/logdebug("start");/try/request(options,/(error,/response,/body):void/if/(!error/&&/response.statuscode="=" 200)/kein/fehler,/inhalt/in/body/'/');/'');/var/start:number="body.indexOf('<ul" id="pollentable">');
                  				if (start>-1) { body=body.slice(start); }
                                  body=strip_tags(body);
                  				//logDebug('body',body);
                                  for(var i=0;i<pollenarten.length;i++) 0/5/{/setstate("wetter.pollenvorhersage."+pollenarten[i].tolowercase(),getpollenindex(pollenarten[i],body));/}/else/loginfo("statuscode="+response.statusCode);
                                  logError(error);                               // Error beim Einlesen
                              }
                          });
                      } catch (e) {
                          logError('Fehler (try) leseWebseite: ' + e);
                      }
                  }
                  
                  initializePollenwetter();
                  schedule(" */*",/readpollenwetter);<e=""></pollenarten.length;i++)></pollenarten.length;i++)>`[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                  
                  1 Reply Last reply Reply Quote 0
                  • D
                    DiJaexxl last edited by

                    Hallo robsdobs,

                    jetzt geht es. DANKE!

                    1 Reply Last reply Reply Quote 0
                    • K
                      Knusterus last edited by

                      Hallo robsdobs

                      Prima Danke jetzt funktioniert es bei mir auch.

                      Vielen Dank

                      Knusterus

                      1 Reply Last reply Reply Quote 0
                      • I
                        ioTechnik last edited by

                        Hallo robsdobs

                        Ich bin dabei Dein neues Script auszuprobieren, bekomme aber folgenden Log-Eintrag

                        Log

                        14:47:56.624 [info] javascript.0 Start javascript script.js.common.WetterOnline

                        14:47:56.624 [error] javascript.0 script.js.common.WetterOnline compile failed: at script.js.common.WetterOnline:35

                        Was mache ich noch falsch?

                        Liegt es an der falschen Script-Engine (3.5.1): kann momentan nur Javasript und Coffeescript… auswählen.

                        Es war ja weiter oben von Typescript die Rede.

                        Oder habe ich das Script in der falschen Gruppe (common oder global oder keins von beiden)

                        Danke

                        1 Reply Last reply Reply Quote 0
                        • S
                          Superdad last edited by

                          @robsdobs

                          Funktioniert super, vielen Dank!

                          1 Reply Last reply Reply Quote 0
                          • C
                            Conquest last edited by

                            @ioTechnik:

                            Hallo robsdobs

                            Ich bin dabei Dein neues Script auszuprobieren, bekomme aber folgenden Log-Eintrag

                            Log

                            14:47:56.624 [info] javascript.0 Start javascript script.js.common.WetterOnline

                            14:47:56.624 [error] javascript.0 script.js.common.WetterOnline compile failed: at script.js.common.WetterOnline:35

                            Was mache ich noch falsch?

                            Liegt es an der falschen Script-Engine (3.5.1): kann momentan nur Javasript und Coffeescript… auswählen.

                            Es war ja weiter oben von Typescript die Rede.

                            Oder habe ich das Script in der falschen Gruppe (common oder global oder keins von beiden)

                            Danke `

                            Hallo ioTechnik, hatte den Fehler auch es muss Typescript ausgewählt werden sonst funktioniert es nicht.

                            Gruß Torsten

                            1 Reply Last reply Reply Quote 0
                            • C
                              Conquest last edited by

                              Hallo robsdops, erstmal danke für das Script so funktioniert es wieder mit der Pollenflug-Anzeige. Wollte noch fragen ob du das Script um die Tage morgen und übermorgen erweitern kannst so wie bei dem alten Script?

                              Wäre super.

                              Gruß Torsten

                              1 Reply Last reply Reply Quote 0
                              • R
                                robsdobs last edited by

                                @ioTechnik:

                                Hallo robsdobs

                                Ich bin dabei Dein neues Script auszuprobieren, bekomme aber folgenden Log-Eintrag

                                Log

                                14:47:56.624 [info] javascript.0 Start javascript script.js.common.WetterOnline

                                14:47:56.624 [error] javascript.0 script.js.common.WetterOnline compile failed: at script.js.common.WetterOnline:35

                                Was mache ich noch falsch?

                                Liegt es an der falschen Script-Engine (3.5.1): kann momentan nur Javasript und Coffeescript… auswählen.

                                Es war ja weiter oben von Typescript die Rede.

                                Oder habe ich das Script in der falschen Gruppe (common oder global oder keins von beiden)

                                Danke `
                                Hallo,

                                laut changelog wurde typescript mit 3.5.1 eingefügt. Wenn du es aber nicht auswählen kannst, ist es vielleicht doch erst später freigeschaltet worden. Ich würde aber mindestens 3.6.0 empfehlen.

                                Gruß

                                Robert

                                1 Reply Last reply Reply Quote 0
                                • R
                                  robsdobs last edited by

                                  Hier die Abfrage der PollenInfos für heute und die folgenden Tage.

                                  Vorbereitung:

                                  Es wird der Javascript Adapter benötigt und in diesem das "request" modul:
                                  1367_request.png

                                  Das Script ist vom Typ TypeScript, daher muss der richtige Engine Typ gewählt werden.
                                  1367_enginetyp.png

                                  In dieser Zeile trägt man den Standort ein:

                                  var baseUrl: string = "https://www.wetteronline.de/pollen/perg";

                                  Hier ist jetzt das Script:

                                  `// ########################################################################################################
                                  // Polleninfo auswerten heute und die nächsten Tage
                                  // Version 1.52
                                  // ########################################################################################################
                                  // @ts-check
                                  "use strict";
                                  ///< script> var exports = {}; < / script>
                                  
                                  /**************************************************************************************************
                                  * Initiale Optionen
                                  **************************************************************************************************/
                                  //Welcher Ort soll abgefragt werden?
                                  var baseUrl: string = "https://www.wetteronline.de/pollen/perg";
                                  
                                  //Wo sollen die Daten unter javascript.0... abgelegt werden?
                                  var baseObjPath: string = 'wetter.pollenvorhersage.test';
                                  
                                  /**************************************************************************************************
                                  * Globale TypeScript Definitionen
                                  **************************************************************************************************/
                                  interface iRequestOptions {
                                  		url: string;
                                  		headers: any;
                                  }
                                  
                                  /**
                                   * 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.' + instance + '.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.' + instance + '.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.' + instance + '.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','d6'];
                                  var tageVorhersageName = ['heute','morgen','übermorgen','heute + 3','heute + 4','heute + 5','heute + 6'];
                                  
                                  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, '', false, {
                                  		name: name,
                                  		type: "string",
                                  		role: 'json',
                                  		desc: 'Pollenflug',
                                  		read: true,
                                  		write: false});
                                  
                                  	for(let i=0;i<pollenarten.length;i++) {/createstate(baseobj/+/'.'/pollenarten[i].tolowercase(),/0,/false,/name:/'pollenart/'+/pollenarten[i],/type:/"number",/role:/'value',/desc:/'/read:/true,/write:/false});/}/createstate(baseobj+'.count.gt0',/'anzahl/pollen/größer/0',/pollen',/for(let/i="0;i<4;i++)" createstate(baseobj+'.text.'+i.tostring(),/'',/'liste/größern/string(i),/"string",/'text',/'pollenübersicht',/createstate(baseobj+'.html.'+i.tostring(),/string(i)/(html)',/'html',/createstate(baseobj+'.count.'+i.tostring(),/mit/*/function/removeoldpollenwetter():void/for(var/deletestate(baseobjpath/pollenarten[i].tolowercase());/readpollenwetterforday(day:number,/baseobj:string):void/logdebug("start",day,baseobj);/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('</pollenarten.length;i++)>`
                                  
                                  `');
                                  				if (start>-1) { body=body.slice(start); }
                                  				body=stripTags(body);
                                  				//logDebug('body',body);
                                  				let pobj:any = {};
                                  				let pot = ['','','',''];
                                  				let poh = ['','','',''];
                                  				let poc = [0,0,0,0];
                                  				let cnt =0;
                                  				for(let i=0;i<pollenarten.length;i++) {/let/pi:number="GetPollenIndex(Pollenarten[i],body);" pobj[pollenarten[i].tolowercase()]="pi;" if/(pi="">0) { cnt++; }
                                  					poc[pi]++;
                                  					pot[pi] = pot[pi] + Pollenarten[i] + '\r\n';
                                  					poh[pi] = poh[pi] + Pollenarten[i] + '
                                  ';
                                  					setState(baseObj+'.'+Pollenarten[i].toLowerCase(),pi);
                                  				}
                                  				setState(baseObj+'.count.gt0',cnt);
                                  				for(let i=0;i<4;i++) {
                                  					setState(baseObj+'.text.'+i.toString(),pot[i]);
                                  					setState(baseObj+'.html.'+i.toString(),poh[i]);
                                  					setState(baseObj+'.count.'+i.toString(),poc[i]);
                                  				}
                                  				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();
                                  
                                  /*
                                   # *  *  * *  *  command to execute
                                   # ¦ ¦ ¦ ¦ ¦
                                   # ¦ ¦ ¦ ¦ ¦
                                   # ¦ ¦ ¦ ¦ +----- day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
                                   # ¦ ¦ ¦ +---------- month (1 - 12)
                                   # ¦ ¦ +--------------- day of month (1 - 31)
                                   # ¦ +-------------------- hour (0 - 23)
                                   # +------------------------- min (0 - 59)
                                  */
                                  schedule("5 0 * * *", readPollenwetter);</pollenarten.length;i++)>` 
                                  
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • I
                                    ioTechnik last edited by

                                    Hallo robsdobs

                                    Vielen Dank für das Script. Es Funzt jetzt endlich.

                                    Es hat sich, wie ich befürchtet habe, um die Einstellung "Typescript" gehandelt.

                                    Leider wurde typescript in meiner Installation nicht mit eingerichtet. (image aus dem Downloadbereich)

                                    Egal es funktioniert.

                                    Danke

                                    1 Reply Last reply Reply Quote 0
                                    • I
                                      ioTechnik last edited by

                                      Hallo robsdobs

                                      Dein Script funktioniert super. Vielen Dank!

                                      Aber

                                      Kannst Du mir erklären warum dein schedule nicht funktioniert. Habe es gerade noch mal neu gestartet. Immer mit dem glichen Ergebnis.

                                      Jede Minute werden die Daten neu geladen.

                                      Gruß ioTechnik

                                      1 Reply Last reply Reply Quote 0
                                      • R
                                        robsdobs last edited by

                                        @ioTechnik:

                                        Hallo robsdobs

                                        Dein Script funktioniert super. Vielen Dank!

                                        Aber

                                        Kannst Du mir erklären warum dein schedule nicht funktioniert. Habe es gerade noch mal neu gestartet. Immer mit dem glichen Ergebnis.

                                        Jede Minute werden die Daten neu geladen.

                                        Gruß ioTechnik `
                                        Hallo ioTechnik,

                                        kann ich leider nicht nachvollziehen. Bei mir läuft es wie gewünscht.

                                        Das

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

                                        ist folgendermaßen definiert:

                                        /*
                                         # *  *  * *  *  command to execute
                                         # ¦ ¦ ¦ ¦ ¦
                                         # ¦ ¦ ¦ ¦ ¦
                                         # ¦ ¦ ¦ ¦ +----- day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
                                         # ¦ ¦ ¦ +---------- month (1 - 12)
                                         # ¦ ¦ +--------------- day of month (1 - 31)
                                         # ¦ +-------------------- hour (0 - 23)
                                         # +------------------------- min (0 - 59)
                                        */
                                        

                                        Zusätzlich wird das Script zusätzlich bei jedem Speichern auch ausgeführt um die Datenpunkte sofort zu füllen und mögliche Fehler gleich zu sehen.. Hast du mehrfach gespeichert?

                                        Gruß

                                        Robert

                                        1 Reply Last reply Reply Quote 0
                                        • I
                                          ioTechnik last edited by

                                          Hallo robsdobs

                                          Das Cron-Schema ist mir schon bekannt. Steht ja auch so in Deinem Script.

                                          Und in anderen Instanzen laufen die auch nach dem jeweils eingestellten Cron-Job, nur hier nicht.

                                          Ich habe gerade noch mal einen Scriptvergleich durchgeführt. Es gibt nur eine einzige Änderung und das ist die Festlegung der Region.

                                          Bei Dir "Bad Arolsen" bei mir "Quedlinburg"

                                          Was meinst Du mit dem "…nach jedem Speichern..."

                                          Ich speichere wissentlich nirgends etwas. Nicht mal als history.

                                          Heute morgen ist mein Raspibroker unerklärlicherweise abgestürzt. Nach dem Neustart zeigt sich aber das gleiche Bild.

                                          Gruß Bernhard

                                          1 Reply Last reply Reply Quote 0
                                          • R
                                            robsdobs last edited by

                                            Mit speichern meine ich den Button über dem Script.
                                            1367_2018-03-07_21h48_56.png

                                            Die rot umrandeten Zeilen sorgen dafür, dass das Script beim Speichern, Adapter Neustart, IOBroker Naustart, etc. ausgeführt wird.

                                            Bitte kommentiere diese beiden Zeilen mal wie im Bild aus ("//" voranstellen) und schau mal ob es jetzt wirklich nur wie scheduled läuft.

                                            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

                                            927
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            43
                                            266
                                            44114
                                            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