NEWS
Wunsch: Pollenflug-(Adapter/wasauchimmer)
-
Hallo
ich bin ein ioBroker Anfänger und gerade am Zusammenstellen einer individuellen Smarthome Steuerung.
Seit Tagen versuche ich schon das Script zur Polenabfrage hinzubekommen. Leider werden Pollen die größer 0 sind nicht angezeigt.
javascript.0 2018-01-08 14:04:41.396 info script.js.Wetter.Pollenflug.Pollenflug: hasel undefined javascript.0 2018-01-08 14:04:41.395 info script.js.Wetter.Pollenflug.Pollenflug: setForeignState(id=javascript.0.WetterOnline.pollenvorhersage.heute.hasel, state=undefined)
ich verwende folgendes Script:
`/* Pollenflug Parser von wetteronline.de http://forum.iobroker.net/viewtopic.php?f=23&t=2799&sid=936235bdac98a70a1d8672897d334a07#p25266 05.05.2016 erstellt von steinwedel für homoran 06.05.2016 Anpassung durch pix */ var url = "https://www.wetteronline.de/pollen/jesenwang"; var pfad = "WetterOnline.pollenvorhersage."; var logging = true; // ab hier nix ändern var Pollenarten = ['Pappel','Weide','Ulme','Birke','Buche','Ampfer','Roggen','Gräser','Eiche','Wegerich','Beifuß','Ambrosia','Hasel','Erle' ]; var tage_vorhersage = ['heute','morgen','übermorgen']; var request = require('request'); function dpAnlegen(y) { for(var i=0;i<pollenarten.length;i++) {/createstate(pfad/+/tage_vorhersage[y]/'.'/pollenarten[i].tolowercase(),0,/name:/'wetteronline/pollenvorhersage/'/pollenarten[i],/desc:/'vorhersage/für/pollenbelastung/durch/type:/'number'/});/}/function/readpollenwetter(x)/var/options="{" url:/((x="">0) ? url + '?fcdatstr=' + tag(x) : url), // korrekten Link erstellen headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1' } }; try { request(options, function (error, response, body) { if (!error && response.statusCode == 200) { // kein Fehler, Inhalt in body body=body.replaceAll(String.fromCharCode(13),""); body=body.replaceAll(String.fromCharCode(10),""); body=body.replaceAll(String.fromCharCode(9),""); body=strip_tags(body); for(var i=0;i<pollenarten.length;i++) 0/60/1000/20160506/{/setstate(pfad/+/tage_vorhersage[x]/'.'/pollenarten[i].tolowercase(),/getpollenindex(pollenarten[i],body));/if/(logging)/log(pollenarten[i].tolowercase()/'/}/else/log("statuscode="+response.statusCode); log(error,'error'); // Error beim Einlesen } }); } catch (e) { log('Fehler (try) leseWebseite: ' + e, 'error'); } } function strip_tags(data) { var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");/return(rueckgabe);/function/getpollenindex(pflanze,/html)/var/code="{'kein'" :0,/'schwach'/:1,/'mäßig'/:2,/'stark'/:3};/result/;/start="html.indexOf(pflanze)+pflanze.length;" stop="result.indexOf('" ');/return/code[result];/string.prototype.replaceall="function(find," replace)/str="this;" str.replace(new/regexp(find.replace(/([.*+?^="!:${}()|[]\/\])/g," "\\$1"),/'g'),/replace);/};/tag/(abstand)/eingabe/0,/1,/2,/.../jetzt="new" date();/jetzt.sethours(0);/jetzt.setminutes(0);/jetzt.setseconds(0);/jetzt.setmilliseconds(0);/newdate="new" newdate.settime(jetzt.gettime()/(24/*/abstand)/);/heute/anzahl/tage/ins/millisekunden/date="newdate.getDate();" month="newdate.getMonth()+1;" year="newdate.getFullYear();" </10)/?/'0'/:/date;/month;/rueckgabe="year.toString()+month.toString()+date.toString();" log('datum/in/link:/rueckgabe);/(rueckgabe);/ausgabe/z.b./alle/aus/dem/array/durchgehen/(x)/main()/for/(var/x="0;" tage_vorhersage.length;/x++)/dpanlegen(x);/readpollenwetter(x);/main();/schedule("5/*",/main);<e=""></pollenarten.length;i++)></pollenarten.length;i++)>` kann mir wer einen Tip geben Viele Grüße Hans "request" als npm Modul ist installiert? Ich habe es auch eben installiert. Sollte eigentlich für morgen Hasel schwach anzeigen. Tut es aber nicht. Gibt nur Warnungen: `~~[code]~~javascript.0 2018-01-11 20:43:53.896 info script.js.common.Pollenflug: erle undefined javascript.0 2018-01-11 20:43:53.895 warn at process._tickCallback (internal/process/next_tick.js:104:9) javascript.0 2018-01-11 20:43:53.895 warn at _combinedTickCallback (internal/process/next_tick.js:80:11) javascript.0 2018-01-11 20:43:53.895 warn at endReadableNT (_stream_readable.js:974:12) javascript.0 2018-01-11 20:43:53.895 warn at IncomingMessage.emit (events.js:185:7) javascript.0 2018-01-11 20:43:53.895 warn at emitNone (events.js:91:20) javascript.0 2018-01-11 20:43:53.894 warn at IncomingMessage.g (events.js:292:16) javascript.0 2018-01-11 20:43:53.894 warn at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1085:12) javascript.0 2018-01-11 20:43:53.894 warn at Request.emit (events.js:188:7) javascript.0 2018-01-11 20:43:53.893 warn at emitOne (events.js:96:13) javascript.0 2018-01-11 20:43:53.893 warn at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1163:10) javascript.0 2018-01-11 20:43:53.893 warn at Request.emit (events.js:191:7) javascript.0 2018-01-11 20:43:53.893 warn at emitTwo (events.js:106:13) javascript.0 2018-01-11 20:43:53.892 warn at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22) javascript.0 2018-01-11 20:43:53.892 warn at Request._callback (script.js.common.Pollenflug:43:17) javascript.0 2018-01-11 20:43:53.888 warn Wrong type of javascript.0.WetterOnline.pollenvorhersage.übermorgen.erle: "undefined". Please fix, while deprecated and will not work in next versions. javascript.0 2018-01-11 20:43:53.887 info script.js.common.Pollenflug: hasel undefined javascript.0 2018-01-11 20:43:53.887 warn at process._tickCallback (internal/process/next_tick.js:104:9) javascript.0 2018-01-11 20:43:53.887 warn at _combinedTickCallback (internal/process/next_tick.js:80:11) javascript.0 2018-01-11 20:43:53.886 warn at endReadableNT (_stream_readable.js:974:12) javascript.0 2018-01-11 20:43:53.886 warn at IncomingMessage.emit (events.js:185:7) javascript.0 2018-01-11 20:43:53.886 warn at emitNone (events.js:91:20) javascript.0 2018-01-11 20:43:53.885 warn at IncomingMessage.g (events.js:292:16) javascript.0 2018-01-11 20:43:53.885 warn at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1085:12) javascript.0 2018-01-11 20:43:53.885 warn at Request.emit (events.js:188:7) javascript.0 2018-01-11 20:43:53.885 warn at emitOne (events.js:96:13) javascript.0 2018-01-11 20:43:53.884 warn at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1163:10) javascript.0 2018-01-11 20:43:53.884 warn at Request.emit (events.js:191:7) javascript.0 2018-01-11 20:43:53.884 warn at emitTwo (events.js:106:13) javascript.0 2018-01-11 20:43:53.884 warn at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22) javascript.0 2018-01-11 20:43:53.883 warn at Request._callback (script.js.common.Pollenflug:43:17) javascript.0 2018-01-11 20:43:53.882 warn Wrong type of javascript.0.WetterOnline.pollenvorhersage.übermorgen.hasel: "undefined". Please fix, while deprecated and will not work in next versions. javascript.0 2018-01-11 20:43:53.881 info script.js.common.Pollenflug: ambrosia 0 javascript.0 2018-01-11 20:43:53.880 info script.js.common.Pollenflug: beifuß 0 javascript.0 2018-01-11 20:43:53.880 info script.js.common.Pollenflug: wegerich 0 javascript.0 2018-01-11 20:43:53.879 info script.js.common.Pollenflug: eiche 0 javascript.0 2018-01-11 20:43:53.878 info script.js.common.Pollenflug: gräser 0 javascript.0 2018-01-11 20:43:53.878 info script.js.common.Pollenflug: roggen 0 javascript.0 2018-01-11 20:43:53.877 info script.js.common.Pollenflug: ampfer 0 javascript.0 2018-01-11 20:43:53.877 info script.js.common.Pollenflug: buche 0 javascript.0 2018-01-11 20:43:53.876 info script.js.common.Pollenflug: birke 0 javascript.0 2018-01-11 20:43:53.874 info script.js.common.Pollenflug: ulme 0 javascript.0 2018-01-11 20:43:53.873 info script.js.common.Pollenflug: weide 0 javascript.0 2018-01-11 20:43:53.872 info script.js.common.Pollenflug: pappel 0 javascript.0 2018-01-11 20:43:53.850 info script.js.common.Pollenflug: erle undefined[/code]`[/i][/i][/i][/i][/i][/i][/i] ``` `
-
Hallo Zusammen,
habe das gleiche Problem mit dem Script…. denke mal, die Website wurde geändert... hab mal kurz draufeschaut in der Tabelle mit den Pollen sind keine Zahlen mehr sondern Symbole (icons) mit dem entsprechenden Wert, denke mals das "parsing" muss hier angepasst werden.
Equilora
-
Hallo,
ich hab eine angepasste Form des Scriptes, die bei mir funktioniert.
Aber Achtung, ist nicht Javascript sondern TypeScript –>also den richtigen Engine-Typ wählen:
`// ######################################################################################################## // 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 { 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});/}/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]
-
Hallo robsdobs,
ich komm mit deinem Script nicht klar. Es enthält globale und lokale Teile. Wo soll ich was speichern.
Wäre toll wenn Du mir helfen könntest.
Gruß
Romö
-
Du kannst alles komplett in einem Script unter common lassen.
Ich habe die Teile, welche bei mir global sind reinkopiert.
-
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...
-
Danke für die Rückmeldung. Ich habe das Script oben nochmal angepasst.
-
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
-
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.
-
Ok, schaue ich mir heute Abend an.
Gesendet von meinem A0001 mit Tapatalk
-
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]
-
@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]
-
Hallo robsdobs,
jetzt geht es. DANKE!
-
Hallo robsdobs
Prima Danke jetzt funktioniert es bei mir auch.
Vielen Dank
Knusterus
-
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
-
Funktioniert super, vielen Dank!
-
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
-
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
-
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
-
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:
Das Script ist vom Typ TypeScript, daher muss der richtige Engine Typ gewählt werden.
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++)>`