Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. SpikeNbg

    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

    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 27
    • Best 3
    • Groups 1

    SpikeNbg

    @SpikeNbg

    3
    Reputation
    18
    Profile views
    27
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    SpikeNbg Follow
    Starter

    Best posts made by SpikeNbg

    • RE: Suche innerhalb des Threads ,Ergebnis nicht mehr sichtbar

      @dslraser Habs gerade auf meinem Mac mini getestet.. Mit Command-F, bzw. CMD-F (Standard für Suche) springt er bei mir auch nur in die Browsersuche. Wenn ich aber Control-F, bzw. Ctrl-F drücke, dann kommt auch das in:topic suchen.. Versuchs mal

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    • RE: Wunsch: Pollenflug-(Adapter/wasauchimmer)

      Hallo zusammen,

      ich war mal so frei und hab es soweit mir möglich an die neue Website Struktur angepasst.
      Noch ein Dank an alle die das Skript erstellt und Verbesserungen eingebracht haben! 👍

      Hier meine angepasste Version zum neuen Seitenlayout von Wetteronline:

      // ########################################################################################################
      // Polleninfo auswerten heute und die nächsten Tage
      // Angepasste Version von Spike - Vielen Dank an steinwedel, pix, robsdobs, und wer noch so dran war :)
      // basierend auf Original Version 1.52 -> angepasste Version 1.0 - 15.03.2019
      // ########################################################################################################
      // @ts-check
      "use strict";
      ///< script> var exports = {}; < / script>
       
      /**************************************************************************************************
      * Initiale Optionen
      **************************************************************************************************/
      //Welcher Ort soll abgefragt werden?
      var baseUrl: string = "https://www.wetteronline.de/pollen/hierdeinenStadtnamenrein";
      
      //Wo sollen die Daten unter javascript.0... abgelegt werden?
      var baseObjPath: string = 'wetter.pollenvorhersage';
      
      /**************************************************************************************************
      * 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(/(&nbsp;|<([^>]+)>)/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, day:number):number {
      	var code ={'noburden':0, 'weakburden':1, 'moderateburden':2, 'strongburden':3}; 
      	var result:string= "";
      	var start:number =html.indexOf(pflanze)+pflanze.length;
      	html=html.slice(start);
      	start = html.indexOf('data-day' + day);
      	html=html.slice(start);
      	var ende:number =html.indexOf("burden") + 6;
      	result=html.substring(0,ende).replace("data-day" + day + '="',"");
      	result=result.trim();
      	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: 'Pollenart ' + Pollenarten[i],
      			read: true,
      			write: false});
      	}
      	
      	createState(baseObj+'.count.gt0', 0, false, {
      		name: 'Anzahl Pollen größer 0',
      		type: "number",
      		role: 'value',
      		desc: 'Anzahl Pollen',
      		read: true,
      		write: false});
      
      	for(let i=0;i<4;i++) {
      		createState(baseObj+'.text.'+i.toString(), '', false, {
      			name: 'Liste Pollen größern ' + String(i),
      			type: "string",
      			role: 'text',
      			desc: 'Pollenübersicht',
      			read: true,
      			write: false});
      		createState(baseObj+'.html.'+i.toString(), '', false, {
      			name: 'Liste Pollen größern ' + String(i) + ' (html)',
      			type: "string",
      			role: 'html',
      			desc: 'Pollenübersicht',
      			read: true,
      			write: false});
      		createState(baseObj+'.count.'+i.toString(), 0, false, {
      			name: 'Anzahl Pollen mit ' + String(i),
      			type: "number",
      			role: 'value',
      			desc: 'Anzahl Pollen',
      			read: true,
      			write: false});
      	}
      }
      
      /* function removeOldPollenwetter():void {
      	for(var i=0;i<Pollenarten.length;i++) {
      		deleteState(baseObjPath + '.' + Pollenarten[i].toLowerCase());
      	}
      } */
      
      function readPollenwetterForAllDays():void {
      	//logDebug("Start",day,baseObj);
          try {
      		var options:iRequestOptions = {
      			url: baseUrl, 
      			headers: {
      				'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
      			}
      		};
              //log(options.url);
      		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('text">Erle</div>');
                      var ende:number =body.indexOf('id="burden_icons_legend_headline">');
      				if (start>-1) { body=body.substring(start, ende); }
      				
                      let pobj:any = {};
      				let pot = ['','','',''];
      				let poh = ['','','',''];
      				let poc = [0,0,0,0];
      				let cnt =0;
                      for(let day=0;day<tageVorhersage.length;day++) {
                          let baseObj: string = baseObjPath + '.' + tageVorhersage[day];
                          initializePollenwetter(baseObj, tageVorhersageName[day]);
                          for(let i=0;i<Pollenarten.length;i++) {
                              let pi:number = GetPollenIndex(Pollenarten[i],body, day);
                              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] + '<br/>';
                              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() {
      
      	readPollenwetterForAllDays();
      	    
      }
      
      //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);
      
      

      Denkt dran, eure Stadt wieder einzutragen und evtl. wohin ihr die Daten hinschreiben wollt. Findet ihr gleich unter "Initiale Optionen"..

      Viel Spaß damit und ein schönes Wochenende!

      posted in ioBroker Allgemein
      SpikeNbg
      SpikeNbg
    • RE: Wunsch: Pollenflug-(Adapter/wasauchimmer)

      Hab den Fehler.. Es gibt jetzt nur noch 6 Tage, nicht mehr 7. (also d0 bis d5, früher d0 bis d6)

      Danke fürs Bescheid geben, komisch nur, dass ich die Warnings heute Mittag nicht gesehen hab 😇

      Hier ist die Version 1.1:

      // ########################################################################################################
      // Polleninfo auswerten heute und die nächsten Tage
      // Angepasste Version von Spike - Vielen Dank an steinwedel, pix, robsdobs, und wer noch so dran war :)
      // basierend auf Original Version 1.52 -> angepasste Version 1.1 - 15.03.2019
      // ########################################################################################################
      // @ts-check
      "use strict";
      ///< script> var exports = {}; < / script>
       
      /**************************************************************************************************
      * Initiale Optionen
      **************************************************************************************************/
      //Welcher Ort soll abgefragt werden?
      var baseUrl: string = "https://www.wetteronline.de/pollen/hierdeinenStadtnamenrein";
      
      //Wo sollen die Daten unter javascript.0... abgelegt werden?
      var baseObjPath: string = 'wetter.pollenvorhersage';
      
      /**************************************************************************************************
      * 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'];
      var tageVorhersageName = ['heute','morgen','übermorgen','heute + 3','heute + 4','heute + 5','heute + 6'];
       
      function stripTags(data:string):string {
      	return data.replace(/(&nbsp;|<([^>]+)>)/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, day:number):number {
      	var code ={'noburden':0, 'weakburden':1, 'moderateburden':2, 'strongburden':3, '':0}; 
      	var result:string= "";
      	var start:number =html.indexOf(pflanze)+pflanze.length;
      	html=html.slice(start);
      	start = html.indexOf('data-day' + day);
      	html=html.slice(start);
      	var ende:number =html.indexOf("burden") + 6;
      	result=html.substring(0,ende).replace("data-day" + day + '="',"");
      	result=result.trim();
      	// log("Pflanze: " + pflanze + ", Tag: " + day + ": "  + result + " > " + 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: 'Pollenart ' + Pollenarten[i],
      			read: true,
      			write: false});
      	}
      	
      	createState(baseObj+'.count.gt0', 0, false, {
      		name: 'Anzahl Pollen größer 0',
      		type: "number",
      		role: 'value',
      		desc: 'Anzahl Pollen',
      		read: true,
      		write: false});
      
      	for(let i=0;i<4;i++) {
      		createState(baseObj+'.text.'+i.toString(), '', false, {
      			name: 'Liste Pollen größern ' + String(i),
      			type: "string",
      			role: 'text',
      			desc: 'Pollenübersicht',
      			read: true,
      			write: false});
      		createState(baseObj+'.html.'+i.toString(), '', false, {
      			name: 'Liste Pollen größern ' + String(i) + ' (html)',
      			type: "string",
      			role: 'html',
      			desc: 'Pollenübersicht',
      			read: true,
      			write: false});
      		createState(baseObj+'.count.'+i.toString(), 0, false, {
      			name: 'Anzahl Pollen mit ' + String(i),
      			type: "number",
      			role: 'value',
      			desc: 'Anzahl Pollen',
      			read: true,
      			write: false});
      	}
      }
      
      /* function removeOldPollenwetter():void {
      	for(var i=0;i<Pollenarten.length;i++) {
      		deleteState(baseObjPath + '.' + Pollenarten[i].toLowerCase());
      	}
      } */
      
      function readPollenwetterForAllDays():void {
      	//logDebug("Start",day,baseObj);
          try {
      		var options:iRequestOptions = {
      			url: baseUrl, 
      			headers: {
      				'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
      			}
      		};
              //log(options.url);
      		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('text">Erle</div>');
                      var ende:number =body.indexOf('id="burden_icons_legend_headline">');
      				if (start>-1) { body=body.substring(start, ende); }
      				
                      let pobj:any = {};
      				let pot = ['','','',''];
      				let poh = ['','','',''];
      				let poc = [0,0,0,0];
      				let cnt =0;
                      for(let day=0;day<tageVorhersage.length;day++) {
                          let baseObj: string = baseObjPath + '.' + tageVorhersage[day];
                          initializePollenwetter(baseObj, tageVorhersageName[day]);
                          for(let i=0;i<Pollenarten.length;i++) {
                              let pi:number = GetPollenIndex(Pollenarten[i],body, day);
                              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] + '<br/>';
                              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() {
      
      	readPollenwetterForAllDays();
      	    
      }
      
      //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);
      
      
      posted in ioBroker Allgemein
      SpikeNbg
      SpikeNbg

    Latest posts made by SpikeNbg

    • RE: BLE xiaomi Temperatur und Luftfeuchtigkeitssensor: problem

      Hi!

      Ich denke es ist dieser Bug: https://github.com/AlCalzone/ioBroker.ble/issues/518

      Bin auch davon betroffen.. RSSI wird aktualisiert, aber nicht die Werte wie z.B. Temperatur oder Luftfeuchtigkeit.

      Zitat von AlCalzone im Bugverlauf: "Anscheinend kommen die Messwerte mehrfach in den empfangenen Daten vor, ausgewertet wird aber jeweils nur der erste. Muss ich mir mal genauer anschauen."

      t1m02k16 created this issue in AlCalzone/ioBroker.ble

      open Verbindungs- und aktualisierungs Probleme #518

      posted in ioBroker Allgemein
      SpikeNbg
      SpikeNbg
    • RE: BLE Adapter funktioniert nach Node Update auf v16 nicht mehr

      @tdcropower Dein Post ist zwar schon älter, aber ich hab grad das gleiche Problem und bin durch die Suche drauf gestoßen.. Bei mir werden ebenfalls die Werte (z.B. Temperatur, Luftfeuchtigkeit) vom ble nicht aktualisiert, wobei der rssi Wert z.B. schon aktualisiert wird.
      Habe dazu jetzt gesehen, dass es einen Bug gibt: https://github.com/AlCalzone/ioBroker.ble/issues/518
      (hier nur zur Info, wenn jemand ebenfalls auf das Problem stößt und sich, wie ich, an den Bug für Updates dran hängen will) 🍻

      t1m02k16 created this issue in AlCalzone/ioBroker.ble

      open Verbindungs- und aktualisierungs Probleme #518

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    • RE: [gelöst] Luftdaten-Adapter mit Timeout

      @rk62 Ui, Danke dir! Hab es erst jetzt gerade gelesen.. Bau ich gleich um!

      Beste Grüße Ralf

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    • RE: [gelöst] Luftdaten-Adapter mit Timeout

      @rk62 Hi Ralf!
      Hier auch Ralf 🙂

      Ich wollte dich fragen, ob du mir dein Script zum Luftdaten Adapter Problem mit den Timeouts senden könntest bzw. hier rein stellen? Achja, evtl. kannst du auch noch den Code oder einen Screenshot für den Parser mitschicken!

      Besten Dank! und Grüße Ralf

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    • RE: Script fürTabelle der Batterie Zustände

      @liv-in-sky
      Gerne.. 🙂

      esphome kannte ich noch nicht.. Mit den Dingern wollte ich auch schon länger mal spielen.. 🙂 Und wieder ein Zeitvertreib für die nächsten Wochenenden 😁

      posted in JavaScript
      SpikeNbg
      SpikeNbg
    • RE: Script fürTabelle der Batterie Zustände

      Hallo @liv-in-sky ,

      ich hätte ne Anregung für neue Devices..

      Ich betreibe hier über den ble Adapter mehrere Sensoren für Temperatur/Luftfeuchtigkeit von Xiaomi..

      222.JPG

      Diese haben in einem State "battery" den Ladezustand in % angegeben.

      111.JPG

      Als Name taucht dort bei allen erstmal nur "MJ_HT_V1" auf, ich habe diesen dann jeweils im Objektbaum um eine Identifikation erweitert (z.B. MJ_HT_V1 Küche). Im angehängten Skript entferne ich dann einfach das "MJ_HT_V1".

      Ich hab dein Skript bei mir mal erweitert, wenn du magst, kannst du es ja übernehmen:

      ...
      var ble=true;
      ...
      
      //ble
       if (ble){
                    tabelleMachSchoen()
                    counter=-1
                    for(var i=0;i<mehrfachTabelle;i++ ) {
                      val0=""; val1=""; val2="";counter++;tabelleBind();
                    }
                     
                    for(var i=0;i<mehrfachTabelle;i++ ) {
                        if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">BLE DEVICES</b>";} else{val0=""; }
                         val1=""; val2="";counter++;tabelleBind();
                    } 
           
      
          myObjF=[]; 
      $('ble.*.*.battery').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
        
         if (!filterArray.includes(id)){
              var ida = id.split('.');
             
              
               // counter++; 
                 val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ; val0=val0.replace(/.battery$/,""); val0=val0.replace("MJ_HT_V1 ",""); val0=val0.replace(/_/g," ");                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                 json1=val0;
                 json3_1=val1help=parseFloat((getState(id).val));
                 if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()+" %";json2=val1help.toString()+" %";json5="red"} else{val1=(" <font color=\"lightgreen\"> ")+val1help.toString()+" %";json2=val1help.toString()+" %",json5="green"}  
                 if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()+" %";json2=val1help.toString()+" %";json5="yellow"}
                 if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                 if (val1help<=battAlarm) {val2=symbolKO} else{val2=symbolOK}         
                 if (val1help>battAlarm && val1help<=battAlarmWarning) val2=symbolWARN;
               
                 if (val1help<=battAlarm) AkkuAlarm.push(1);
                 if (val1help<=battAlarm)  alarmMessage.push(val0);
                 json3=val2;
                  json6="BLE"
                   if (braucheMaterialDesignWidget || braucheMaterialDesignWidgetTable) {
                    json4=json4=pfadBilderMaterialWidget+"xiaomki.png"
                    makeJsonWidget(json1,json2,json3,json4,json5,json6,json3_1);}
                 let help=[val0,val1,val2]; myObjF.push(help);
         
           //tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
       
       } }); sortierMal(myObjF);
      
        }  //ende ble
      


      Unten ist noch ein png für die Verwendung MaterialDesignWidget angegeben. Da ich das bisher nicht verwende und nicht weiß was es da alles gibt, oder ob du die erstellst, habe ich einfach xiaomki.png angegeben. Vielleicht passt das ja direkt 😁

      Vielen Dank dir für das Skript, ich hab bei mir mehrere Kategorien aktiviert und das ist echt ne große Hilfe! 🍻

      posted in JavaScript
      SpikeNbg
      SpikeNbg
    • RE: Suche innerhalb des Threads ,Ergebnis nicht mehr sichtbar

      @dslraser Habs gerade auf meinem Mac mini getestet.. Mit Command-F, bzw. CMD-F (Standard für Suche) springt er bei mir auch nur in die Browsersuche. Wenn ich aber Control-F, bzw. Ctrl-F drücke, dann kommt auch das in:topic suchen.. Versuchs mal

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    • RE: Suche innerhalb des Threads ,Ergebnis nicht mehr sichtbar

      @sigi234 Perfekt! Danke dir!

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    • RE: Suche innerhalb des Threads ,Ergebnis nicht mehr sichtbar

      @Jey-Cee Woooohoooooo! 😀 Danke, das wars! In die Einstellungen schauen, da hätte ich auch mal draufkommen können.. 😯 Gleich mal nachsehen, was sich da noch so verbirgt.. Vielen Dank nochmal euch fürs helfen! 🍻

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    • RE: Suche innerhalb des Threads ,Ergebnis nicht mehr sichtbar

      @sigi234 Dein Screenshot sieht schon richtig aus, so meine ich das. Man sieht ja bei dir ganz klar, dass im Suchen Feld eine in:topic-... Suche aktiv ist.

      Wenn ich jedoch bei meinen Browsers (Firefox oder Chrome getestet) "Strg-F" drücke, dann kommt nur die Browser eigene Suche und nicht die Forum-in-topic Suche:
      Ich klicke auch nicht ins Suchen Feld, ich bin einfach im Thread und drücke "Strg-F".
      Gibt es evtl. eine Einstellung, in der ich ein Überladen des "Strg-F" Befehls durch das Forum zulassen muss? Weil grundsätzlich ist es ja korrekt, dass mit "Strg-F" die Browser Suche aufgeht..

      suche.JPG

      posted in Error/Bug
      SpikeNbg
      SpikeNbg
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo