Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. (gelöst) javascript läuft nicht

    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

    (gelöst) javascript läuft nicht

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

      Hallo Zusammen, ich bräuchte mal wieder etwas Hilfe, mein Javascript Adapter läuft nicht mehr.

      Hier der Log:

      host-raspberrypi 2016-11-02 20:05:10.377 info Restart adapter system.adapter.javascript.0 because enabled

      host-raspberrypi 2016-11-02 20:05:10.376 error instance system.adapter.javascript.0 terminated with code 0 (OK)

      javascript-0 2016-11-02 20:05:10.351 info terminating

      TypeError: 2016-11-02 20:05:10.297 error at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:969:12)

      TypeError: 2016-11-02 20:05:10.297 error at Request.emit (events.js:169:7)

      TypeError: 2016-11-02 20:05:10.297 error at emitOne (events.js:77:13)

      TypeError: 2016-11-02 20:05:10.297 error at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1048:10)

      TypeError: 2016-11-02 20:05:10.297 error at Request.emit (events.js:172:7)

      TypeError: 2016-11-02 20:05:10.297 error at emitTwo (events.js:87:13)

      TypeError: 2016-11-02 20:05:10.297 error at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:187:22)

      TypeError: 2016-11-02 20:05:10.297 error at Request._callback (script.js.Ölpreis.Skript2:180:17)

      TypeError: 2016-11-02 20:05:10.297 error at findForecastDate (script.js.Ölpreis.Skript2:161:18)

      TypeError: 2016-11-02 20:05:10.297 error at findeDatum (script.js.Ölpreis.Skript2:166:28)

      TypeError: 2016-11-02 20:05:10.297 error body.split is not a function

      uncaught 2016-11-02 20:05:10.290 error exception: body.split is not a function

      javascript-0 2016-11-02 20:05:10.276 error script.js.Ölpreis.Skript2: Fehler beim Ausschneiden

      javascript-0 2016-11-02 20:05:10.273 error script.js.Ölpreis.Skript2: Fehler beim Ausschneiden

      javascript-0 2016-11-02 20:05:09.987 info script.js.Waschmaschine.Skript2: registered 1 subscription and 0 schedules

      javascript-0 2016-11-02 20:05:09.976 info Start javascript script.js.Waschmaschine.Skript2

      javascript-0 2016-11-02 20:05:09.971 info script.js.Ölpreis.Skript2: registered 0 subscriptions and 1 schedule

      javascript-0 2016-11-02 20:05:09.901 info Start javascript script.js.Ölpreis.Skript2

      javascript-0 2016-11-02 20:05:09.850 info received all objects

      javascript-0 2016-11-02 20:05:09.273 info received all states

      javascript-0 2016-11-02 20:05:07.807 info requesting all objects

      javascript-0 2016-11-02 20:05:07.804 info requesting all states

      javascript-0 2016-11-02 20:05:07.784 info starting. Version 3.0.10 in /opt/iobroker/node_modules/iobroker.javascript

      Hat vieleicht jemand einen Tipp?

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo,

        das Log meckert über das Ölpreis-Skript. Deaktiviere es mal und starte Javascript dann neu.

        Dann poste das Skript mal hier (bitte in Code- und Spoiler-Tags).

        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          Ich tippe auf:

          Ordner: Ölpreis

          Skript: Skript2

          Gruß

          Rainer

          1 Reply Last reply Reply Quote 0
          • DirkK
            DirkK last edited by

            Danke Pix, Danke Rainer,

            bin leider gerade zum Schindern gefahren. Ich werde das morgen Vormittag tun und dann das Ergebnis posten. Aber eigentlich lief das Script

            schon einige Wochen fehlerfrei, weiß der Fuchs, ich probier das mal

            1 Reply Last reply Reply Quote 0
            • DirkK
              DirkK last edited by

              So da bin ich wieder,

              Ich hab das skript gastopt, und Javascript wieder gestartet, läuft, und wenn ich jetzt das skript

              wieder zuschalte der selbe fehler

              ! 19:21:27.182 [info] javascript.0 Start javascript script.js.Ölpreis.Skript2
              ! 19:21:27.183 [info] javascript.0 script.js.Ölpreis.Skript2: registered 0 subscriptions and 1 schedule
              ! 19:21:27.607 [error] javascript.0 script.js.Ölpreis.Skript2: Fehler beim Ausschneiden
              ! 19:21:27.607 [error] javascript.0 script.js.Ölpreis.Skript2: Fehler beim Ausschneiden
              ! 19:21:27.608 [error] TypeError: body.split is not a function at findeDatum (script.js.Ölpreis.Skript2:166:28) at findForecastDate (script.js.Ölpreis.Skript2:161:18) at Request._callback (script.js.Ölpreis.Skript2:180:17) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:187:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1048:10) at emitOne (events.js:77:13) at Request.emit (events.js:169:7) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:969:12)
              ! 19:22:02.172 [info] javascript.0 Start javascript script.js.Ölpreis.Skript2
              ! 19:22:02.172 [info] javascript.0 script.js.Ölpreis.Skript2: registered 0 subscriptions and 1 schedule
              ! 19:22:02.476 [error] javascript.0 script.js.Ölpreis.Skript2: Fehler beim Ausschneiden
              ! 19:22:02.476 [error] javascript.0 script.js.Ölpreis.Skript2: Fehler beim Ausschneiden
              ! 19:22:02.477 [error] TypeError: body.split is not a function at findeDatum (script.js.Ölpreis.Skript2:166:28) at findForecastDate (script.js.Ölpreis.Skript2:161:18) at Request._callback (script.js.Ölpreis.Skript2:180:17) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:187:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1048:10) at emitOne (events.js:77:13) at Request.emit (events.js:169:7) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:969:12)

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators last edited by

                @pix:

                Deaktiviere es mal und starte Javascript dann neu.

                Dann poste das Skript mal hier (bitte in Code- und Spoiler-Tags). `

                Gruß

                Rainer

                1 Reply Last reply Reply Quote 0
                • DirkK
                  DirkK last edited by

                  Entschuldige wenn ich was Missverstanden hab, ich dachte das reicht so.

                  Ich nehme morgen den nächsten Anlauf.

                  1 Reply Last reply Reply Quote 0
                  • DirkK
                    DirkK last edited by

                    Hallo Rainer, hier mal das Skript, ich hab meine Finger nicht drann gehabt,… Ehrenwort

                    <code>[code]/* Ölpreis abfragen
                    Auf diese Anfrage hin: http://forum.iobroker.net/viewtopic.php?f=8&t=3455
                    
                    Quelle: heizoel24.de
                    Basis: solar-wetter Skript
                    
                    erstellt: 03.08.2016 von pix
                    
                    */
                    
                    var logging = false;
                    var link = 'http://www.heizoel24.de/heizoelpreise';
                    
                    // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                    
                    var idProgPrice =   'Heizoel.Forecast.Price',
                        idProgText =    'Heizoel.Forecast.Text',
                        idProgPercent = 'Heizoel.Forecast.Percent',
                        idProgDate =    'Heizoel.Forecast.Date';
                    
                    createState(idProgPrice, {
                        name: 'HeizOel24.de Vorhersage Preis',
                        desc: 'Heizölpreis Prognose für den nächsten Werktag',
                        type: 'number',
                        def: 0,
                        min: 0,
                        unit: '€/100l'
                    });
                    createState(idProgText, {
                        name: 'HeizOel24.de Vorhersage Text',
                        desc: 'Heizölpreis Prognose für den nächsten Werktag',
                        type: 'string',
                        def: ''
                    });
                    createState(idProgPercent, {
                        name: 'HeizOel24.de Vorhersage Änderung in Prozent',
                        desc: 'Heizölpreis Prognose für den nächsten Werktag',
                        type: 'number',
                        def: 0,
                        min: 0,
                        max: 100,
                        unit: '%'
                    });
                    createState(idProgDate, {
                        name: 'HeizOel24.de Vorhersage Datum',
                        desc: 'Heizölpreis Prognose für den nächsten Werktag, dieses Datum',
                        type: 'string',
                        def: ''
                    });
                    
                    var request = require('request');
                    
                    function extractPrice(body,text1,text2) {
                        var start = body.indexOf(text1) + text1.length;
                        var ende = body.indexOf(text2,start);
                        if (logging) log('Startposition: ' + start);
                        if (logging) log('Endposition: ' + ende);
                        var zwischenspeicher;
                        if (((start != -1) && (ende != -1)) && (start<ende)) 1/{/fehler/abfangen/zwischenspeicher="body.slice(start,ende);" if/(logging)/log(zwischenspeicher);/var/zwischenspeicher_array="zwischenspeicher.split(',');" teilen/vorm/komma/zwischenspeicher_vorn="zwischenspeicher_array[0];" log(zwischenspeicher_vorn);/zwischenspeicher_array_hinten="zwischenspeicher_array[1].slice(0,2);" zwei/stellen/nach/dem/log(zwischenspeicher_array_hinten);/rueckgabe="parseFloat(zwischenspeicher_vorn" +/'.'/zwischenspeicher_array_hinten);/log(rueckgabe);/return(rueckgabe);/}/else/;/log(zwischenspeicher,/'error');/return(0);/function/extracttrend(body,text1,text2)/start="body.indexOf(text1)" text1.length;/ende="body.indexOf(text2,start);" log('startposition:/'/start);/log('endposition:/ende);/zwischenspeicher;/(((start/!="-1)" &&/(ende/(start<ende))/zwischenspeicher_array_vorn="zwischenspeicher_array[0].slice(zwischenspeicher_array[0].length-2,zwischenspeicher_array[0].length);" =="1)" ?/parseint(zwischenspeicher_vorn,10)/*/(-1)/:/parseint(zwischenspeicher_vorn,10);/');/zwischenspeicher_vorzeichen="zwischenspeicher_vorn[0];" oder/-/(logging)log('vorzeichen:/zwischenspeicher_vorzeichen);/zwischenspeicher_ganzzahl="zwischenspeicher_vorn[1];" zb/zwischenspeicher_ganzzahl;/(logging)log('ganzzahl:/zwischenspeicher_vorn);/(logging)log(rueckgabe);/extracttext(body,text1,text2)/return(zwischenspeicher);/findforecastprice/(body)/text1="<div class=&quot;forecast-value&quot;>" ,/erstes/auftauchen/text2="</div>" price="extractPrice(body,text1,text2);" log('prognose/preis:/eur');/setstate(idprogprice,/parsefloat(price,10));/wert/in/objekt/schreiben/findforecasttext/text="extractText(body,text1,text2);" text:/text);/setstate(idprogtext,/findforecastpercent/percent="extractTrend(body,text1,text2);" prozent:/'%');/setstate(idprogpercent,/percent);/findforecastdate/tag/day="extractText(body,text1,text2);" datum:/day);/pdatum="findeDatum(day);" setstate(idprogdate,/pdatum);/findedatum/stringdatum="body.split(',');" stringjahr="stringdatum[0].trim();" stringzeit="stringdatum[1].trim();" log('datum:/);/return(stringjahr/stringzeit);/lesewebseite/()/try/request(link,/(error,/response,/body)/(!error/response.statuscode="=" 200)/kein/fehler,/inhalt/body/findforecastprice(body);/findforecasttext(body);/findforecastpercent(body);/findforecastdate(body);/log('heizöl/prognose/von/heizoel24.de/eingelesen');/log(error,'error');/error/beim/einlesen/});/catch/(e)/log('fehler/(try)/lesewebseite:/e,/bei/skriptstart/lesewebseite();/schedule/schedule("59/*",/lesewebseite);<e="">[/code]</ende))></code>
                    

                    ! /* Ölpreis abfragen
                    ! Auf diese Anfrage hin: http://forum.iobroker.net/viewtopic.php?f=8&t=3455
                    ! Quelle: heizoel24.de
                    ! Basis: solar-wetter Skript
                    ! erstellt: 03.08.2016 von pix
                    ! */
                    ! var logging = false;
                    ! var link = 'http://www.heizoel24.de/heizoelpreise';
                    ! // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                    ! var idProgPrice = 'Heizoel.Forecast.Price',
                    ! idProgText = 'Heizoel.Forecast.Text',
                    ! idProgPercent = 'Heizoel.Forecast.Percent',
                    ! idProgDate = 'Heizoel.Forecast.Date';
                    ! createState(idProgPrice, {
                    ! name: 'HeizOel24.de Vorhersage Preis',
                    ! desc: 'Heizölpreis Prognose für den nächsten Werktag',
                    ! type: 'number',
                    ! def: 0,
                    ! min: 0,
                    ! unit: '€/100l'
                    ! });
                    ! createState(idProgText, {
                    ! name: 'HeizOel24.de Vorhersage Text',
                    ! desc: 'Heizölpreis Prognose für den nächsten Werktag',
                    ! type: 'string',
                    ! def: ''
                    ! });
                    ! createState(idProgPercent, {
                    ! name: 'HeizOel24.de Vorhersage Änderung in Prozent',
                    ! desc: 'Heizölpreis Prognose für den nächsten Werktag',
                    ! type: 'number',
                    ! def: 0,
                    ! min: 0,
                    ! max: 100,
                    ! unit: '%'
                    ! });
                    ! createState(idProgDate, {
                    ! name: 'HeizOel24.de Vorhersage Datum',
                    ! desc: 'Heizölpreis Prognose für den nächsten Werktag, dieses Datum',
                    ! type: 'string',
                    ! def: ''
                    ! });
                    ! var request = require('request');
                    ! function extractPrice(body,text1,text2) {
                    ! var start = body.indexOf(text1) + text1.length;
                    ! var ende = body.indexOf(text2,start);
                    ! if (logging) log('Startposition: ' + start);
                    ! if (logging) log('Endposition: ' + ende);
                    ! var zwischenspeicher;
                    ! if (((start != -1) && (ende != -1)) && (start <ende)) {/fehler/abfangen<br="">zwischenspeicher = body.slice(start,ende);
                    ! zwischenspeicher = zwischenspeicher.trim();
                    ! if (logging) log(zwischenspeicher);
                    ! var zwischenspeicher_array = zwischenspeicher.split(','); // Teilen vorm Komma
                    ! var zwischenspeicher_vorn = zwischenspeicher_array[0];
                    ! if (logging) log(zwischenspeicher_vorn);
                    ! var zwischenspeicher_array_hinten = zwischenspeicher_array[1].slice(0,2); // zwei Stellen nach dem Komma
                    ! if (logging) log(zwischenspeicher_array_hinten);
                    ! var rueckgabe = parseFloat(zwischenspeicher_vorn + '.' + zwischenspeicher_array_hinten);
                    ! if (logging) log(rueckgabe);
                    ! return(rueckgabe);
                    ! } else {
                    ! zwischenspeicher = 'Fehler beim Ausschneiden';
                    ! log(zwischenspeicher, 'error');
                    ! return(0);
                    ! }
                    ! }
                    ! function extractTrend(body,text1,text2) {
                    ! var start = body.indexOf(text1) + text1.length;
                    ! var ende = body.indexOf(text2,start);
                    ! if (logging) log('Startposition: ' + start);
                    ! if (logging) log('Endposition: ' + ende);
                    ! var zwischenspeicher;
                    ! if (((start != -1) && (ende != -1)) && (start <ende)) {/fehler/abfangen<br="">zwischenspeicher = body.slice(start,ende);
                    ! zwischenspeicher = zwischenspeicher.trim();
                    ! if (logging) log(zwischenspeicher);
                    ! var zwischenspeicher_array = zwischenspeicher.split(','); // Teilen vorm Komma
                    ! //var zwischenspeicher_array_vorn = zwischenspeicher_array[0].slice(zwischenspeicher_array[0].length-2,zwischenspeicher_array[0].length); // zwei Stellen vorm Komma
                    ! var zwischenspeicher_vorn = zwischenspeicher_array[0];
                    ! //zwischenspeicher_vorn = (zwischenspeicher_vorn.indexOf('+') == 1) ? parseInt(zwischenspeicher_vorn,10) * (-1) : parseInt(zwischenspeicher_vorn,10);
                    ! if (logging) log(zwischenspeicher_vorn);
                    ! zwischenspeicher_vorn = zwischenspeicher_vorn.split(' ');
                    ! var zwischenspeicher_vorzeichen = zwischenspeicher_vorn[0]; // + oder -
                    ! if (logging)log('Vorzeichen: ' + zwischenspeicher_vorzeichen);
                    ! var zwischenspeicher_ganzzahl = zwischenspeicher_vorn[1]; // zB 1
                    ! zwischenspeicher_vorn = zwischenspeicher_vorzeichen + zwischenspeicher_ganzzahl;
                    ! if (logging)log('Ganzzahl: ' + zwischenspeicher_vorn);
                    ! var zwischenspeicher_array_hinten = zwischenspeicher_array[1].slice(0,2); // zwei Stellen nach dem Komma
                    ! if (logging) log(zwischenspeicher_array_hinten);
                    ! var rueckgabe = parseFloat(zwischenspeicher_vorn + '.' + zwischenspeicher_array_hinten);
                    ! if (logging)log(rueckgabe);
                    ! return(rueckgabe);
                    ! } else {
                    ! zwischenspeicher = 'Fehler beim Ausschneiden';
                    ! log(zwischenspeicher, 'error');
                    ! return(0);
                    ! }
                    ! }
                    ! function extractText(body,text1,text2) {
                    ! var start = body.indexOf(text1) + text1.length;
                    ! var ende = body.indexOf(text2,start);
                    ! if (logging) log('Startposition: ' + start);
                    ! if (logging) log('Endposition: ' + ende);
                    ! var zwischenspeicher;
                    ! if (((start != -1) && (ende != -1)) && (start <ende)) {/fehler/abfangen<br="">zwischenspeicher = body.slice(start,ende);
                    ! zwischenspeicher = zwischenspeicher.trim();
                    ! if (logging) log(zwischenspeicher);
                    ! return(zwischenspeicher);
                    ! } else {
                    ! zwischenspeicher = 'Fehler beim Ausschneiden';
                    ! log(zwischenspeicher, 'error');
                    ! return(0);
                    ! }
                    ! }
                    ! function findForecastPrice (body) {
                    ! var text1 = '', // erstes Auftauchen
                    ! text2 = ''; // erstes Auftauchen
                    ! var price = extractPrice(body,text1,text2);
                    ! if (logging) log('Prognose Preis: ' + price + ' EUR');
                    ! setState(idProgPrice, parseFloat(price,10)); // Wert in Objekt schreiben
                    ! }
                    ! function findForecastText (body) {
                    ! var text1 = '', // erstes Auftauchen
                    ! text2 = ''; // erstes Auftauchen
                    ! var text = extractText(body,text1,text2);
                    ! if (logging) log('Prognose Text: ' + text);
                    ! setState(idProgText, text); // Wert in Objekt schreiben
                    ! }
                    ! function findForecastPercent (body) {
                    ! var text1 = '', // erstes Auftauchen
                    ! text2 = ''; // erstes Auftauchen
                    ! var percent = extractTrend(body,text1,text2);
                    ! if (logging) log('Prognose Prozent: ' + percent + '%');
                    ! setState(idProgPercent, percent); // Wert in Objekt schreiben
                    ! }
                    ! function findForecastDate (body) {
                    ! var text1 = '(', // erstes Auftauchen + 1 Tag
                    ! text2 = ')'; // erstes Auftauchen
                    ! var day = extractText(body,text1,text2);
                    ! if (logging) log('Prognose Datum: ' + day);
                    ! var pdatum = findeDatum(day);
                    ! setState(idProgDate, pdatum); // Wert in Objekt schreiben
                    ! }
                    ! function findeDatum (body) {
                    ! var stringdatum = body.split(',');
                    ! var stringjahr = stringdatum[0].trim();
                    ! var stringzeit = stringdatum[1].trim();
                    ! if (logging) log('Datum: ' + stringjahr + ' ' + stringzeit );
                    ! return(stringjahr + ' ' + stringzeit);
                    ! }
                    ! function leseWebseite () {
                    ! try {
                    ! request(link, function (error, response, body) {
                    ! if (!error && response.statusCode == 200) { // kein Fehler, Inhalt in body
                    ! findForecastPrice(body);
                    ! findForecastText(body);
                    ! findForecastPercent(body);
                    ! findForecastDate(body);
                    ! log('Heizöl Prognose von heizoel24.de eingelesen');
                    ! } else log(error,'error'); // Error beim Einlesen
                    ! });
                    ! } catch (e) {
                    ! log('Fehler (try) leseWebseite: ' + e, 'error');
                    ! }
                    ! }
                    ! // bei Skriptstart
                    ! leseWebseite();
                    ! // Schedule
                    ! schedule("59 * * * *", leseWebseite);</ende))></ende))></ende))>

                    1 Reply Last reply Reply Quote 0
                    • P
                      pix last edited by

                      Hallo,

                      habe jetzt nur mal schnell drüber gesehen über den Chaos Post :lol:

                      Bei mir wirft das Skript den gleichen Fehler aus. Vermutlich ist der Code der geparsten geparste Webseite vom Betreiber geändert worden.

                      Ich schaue mir das mal an. Kann ein paar Tage dauern. Hoffe, dein Tank ist nicht leer.

                      Gruß

                      Pix

                      1 Reply Last reply Reply Quote 0
                      • P
                        pix last edited by

                        Hab mir die Quellseite nochmal angesehen.

                        Wenn es reicht, werde ich dir Daten rausparsen, die auf Tafel angezeigt werden, welche der langhaarige Ire hält, okay?

                        Gruß

                        Pix

                        1 Reply Last reply Reply Quote 0
                        • DirkK
                          DirkK last edited by

                          Jo, danke dir pix,

                          die Tanks sind voll der Winter kann kommen, also keinen Stress,

                          aber was meinst du mit Chaos Post, ich hab versucht alles richtig zu machen (… er war stets bemüht)

                          und was meinst du mit
                          @pix:

                          Wenn es reicht, werde ich dir Daten rausparsen, die auf Tafel angezeigt werden, welche der langhaarige Ire hält, okay? `

                          aber ich freue mich das du mir hilfst, mochmals Danke

                          1 Reply Last reply Reply Quote 0
                          • P
                            pix last edited by

                            Hallo,

                            Sorry für das "Chaos Post", du bist bei den Code- und Spoiler Tags etwas durcheinander gekommen. Nicht schlimm.

                            Der langhaarige Ire ist Joey Kelly. Er ist auf der Hauptseite von heizoel24.de zu sehen. Er hält eine Tafel. Die Tafel zeigt einige Werte.

                            Gruß

                            Pix

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators last edited by

                              @pix:

                              Der langhaarige Ire ist Joey Kelly. Er ist auf der Hauptseite von heizoel24.de zu sehen. Er hält eine Tafel. Die Tafel zeigt einige Werte. `
                              So etwas hatte ich erwartet.

                              Aber ich hatte nur einen fast Glatzköpfigen mit einer Tafel auf den Seiten gesehen 😮

                              Gruß

                              Rainer

                              1 Reply Last reply Reply Quote 0
                              • DirkK
                                DirkK last edited by

                                Tut mir leid,

                                ich konnte mich an beide nicht erinnern, liegt wohl an der Reizüberflutung 😄

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators last edited by

                                  Habe mir das jetzt nochmal am Monitor angesehen.

                                  Das ist tatsächlich Joey Kelly. :oops:

                                  Am Tablet habe ich ihn echt nicht erkannt.

                                  Gruß

                                  Rainer

                                  1 Reply Last reply Reply Quote 0
                                  • P
                                    pix last edited by

                                    Hallo,

                                    nochmal um sicherzugehen:

                                    Das sind die Werte, die du brauchst, oder? 261_bildschirmfoto_2016-11-08_um_19.52.33.jpg

                                    Preis, Datum, Prozent

                                    Gruß

                                    Pix

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      pix last edited by

                                      Hallo,

                                      hier zeigt sich wieder, warum ein Adapter für das Einlesen diverser Informationen von einer Webseite ungünstig ist: Ein Änderung in der Struktur der Quellseite und das Skript/Adapter läuft nicht mehr und muss angepasst werden. Ein Skript können doch tendenziell mehr User anpassen, als einen Adapter.

                                      Hier nun die neue Version:

                                      <u>Änderungen</u>

                                      • Keine Prognose mehr, sondern Ist-Preise

                                      • Datenpunkt Text fällt weg

                                      • Pfad zu den drei Datenpunkten geändert (ggf. in VIS anpassen)

                                        • javascript.INSTANZ.Heizoel.Ist.Price

                                        • javascript.INSTANZ.Heizoel.Ist.Percent

                                        • javascript.INSTANZ.Heizoel.Ist.Date (ist Zeichenkette, kein Datumsformat)

                                      Skript:

                                      ! ````
                                      /* Ölpreis abfragen
                                      Auf diese Anfrage hin: http://forum.iobroker.net/viewtopic.php?f=8&t=3455
                                      am 4.11.2016 getestet, nach Änderung der Webseite nun Fehler
                                      Quelle: heizoel24.de
                                      Basis: solar-wetter Skript
                                      ! erstellt: 03.08.2016 von pix
                                      12.11.2016 Webseite liefert nicht mehr Prognose, sondern Ist-Preis.
                                      Skript angepasst
                                      */
                                      ! var logging = false;
                                      var link = 'http://www.heizoel24.de/heizoelpreise';
                                      ! // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                                      var request = require('request');
                                      var idPrice = 'Heizoel.Ist.Price',
                                      idPercent = 'Heizoel.Ist.Percent',
                                      idDate = 'Heizoel.Ist.Date';

                                      createState(idPrice, {
                                      name: 'HeizOel24.de Preis',
                                      desc: 'Heizölpreis für heute',
                                      type: 'number',
                                      def: 0,
                                      min: 0,
                                      unit: '€/100l'
                                      });
                                      createState(idPercent, {
                                      name: 'HeizOel24.de Änderung in Prozent zum Vortag',
                                      desc: 'Heizölpreisänderung zum Vortag',
                                      type: 'number',
                                      def: 0,
                                      min: 0,
                                      max: 100,
                                      unit: '%'
                                      });
                                      createState(idDate, {
                                      name: 'HeizOel24.de Datum',
                                      desc: 'Heizölpreis Zeitstempel (als String)',
                                      type: 'string',
                                      def: ''
                                      });

                                      ! function extractText(body,text1,text2) {
                                      var start = body.indexOf(text1) + text1.length;
                                      var ende = body.indexOf(text2,start);
                                      if (logging) log('Startposition: ' + start);
                                      if (logging) log('Endposition: ' + ende);
                                      var zwischenspeicher;
                                      if (((start != -1) && (ende != -1)) && (start <ende)) {/fehler/abfangen/zwischenspeicher="body.slice(start,ende);" if/(logging)/log(zwischenspeicher);/return(zwischenspeicher);/}/else/;/log(zwischenspeicher,/'error');/return(0);/ok/function/findprice/(body)/var/text1="class="middle">" ,/erstes/auftauchen/text2="<span class="currency">€</span>" price="extractText(body,text1,text2);" 50,54/price_array="price.split(',');" +/'.'/price_array[1];/log('heizöl/preis:/'/eur');/setstate(idprice,/parsefloat(price,10));/wert/in/objekt/schreiben/findpercent/percent="extractText(body,text1,text2);" percent_array="percent.split(',');" percent_array[1];/prozent:/percent.tofixed(2)/'%');/setstate(idpercent,/percent);/finddate/day="extractText(body,text1,text2);" ∅/100l,/12.11.2016</span="">if (logging) log('Heizöl Datum: ' + day);
                                      var pdatum = findeDatum(day);
                                      setState(idDate, pdatum); // Wert in Objekt schreiben
                                      }
                                      ! function findeDatum (body) {
                                      if (logging) log(body);
                                      var stringdatum_array = body.split('.'); // ∅ 100l, 12.11.2016
                                      var stringjahr = stringdatum_array[2].trim(); // 2016
                                      var stringmonat = stringdatum_array[1].trim(); // 11
                                      var stringtag_string = stringdatum_array[0].trim(); // ∅ 100l, 12
                                      var stringtag_array = stringtag_string.split(','); // bei Komma trennen
                                      var stringtag = stringtag_array[1].trim(); // 12
                                      var stringdatum = stringtag + '.' + stringmonat + '.' + parseInt(stringjahr,10);
                                      if (logging) log('Datum: ' + stringdatum);
                                      return(stringdatum);
                                      }
                                      ! function leseWebseite () {
                                      try {
                                      request(link, function (error, response, body) {
                                      if (!error && response.statusCode == 200) { // kein Fehler, Inhalt in body
                                      findPrice(body);
                                      findPercent(body);
                                      findDate(body);
                                      log('Heizöl-Preis von heizoel24.de eingelesen');
                                      } else log(error,'error'); // Error beim Einlesen
                                      });
                                      } catch (e) {
                                      log('Fehler (try) leseWebseite: ' + e, 'error');
                                      }
                                      }
                                      ! // bei Skriptstart
                                      leseWebseite();
                                      ! // Schedule
                                      schedule("59 * * * *", leseWebseite);</ende))>

                                      
                                      Gruß
                                      
                                      Pix
                                      1 Reply Last reply Reply Quote 0
                                      • DirkK
                                        DirkK last edited by

                                        Hallo Pix, genau das wollte ich, hab das aber schon im anderen Beitrag bestätigt, ich setze das mal auf gelöst, danke nochmals

                                        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

                                        673
                                        Online

                                        31.9k
                                        Users

                                        80.2k
                                        Topics

                                        1.3m
                                        Posts

                                        3
                                        18
                                        3317
                                        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