Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Ölpreis

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    SOLVED Ölpreis

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

      Hallo zusammen,

      ich habe die Warnmeldungen aus dem 2. Script "Heizölpreis am Wohnort" beseitigen können.

      Hier das neue Script:

      /* Ö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
      {1}
      erstellt: 03.08.2016 von pix
      12.11.2016 Webseite liefert nicht mehr Prognose, sondern Ist-Preis. Skript angepasst
      29.08.2017 SKRIPT AUSGESCHALTET, DA NICHT IN GEBRAUCH
      {2}
      Angepasst am 14.07.2019 von Oliver Böhm, verwendet für "Heizölpreis für Wohnort abfragen"
      Quelle:  www.esyoil.com
      */
       
      var logging = false;
      var link = getState('javascript.0.Heizoel.Bestelldaten.Weblink').val;
       
      // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
      var request = require('request');
      var price;
      var priceLB;
      var MwStG;
      var MwStL;
      var idPriceGB     =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Bruttopreis Gesamt',
          idPriceLB     =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Bruttopreis 100l',
          idMwStL       =   'Heizoel.Heizölpreis.Wohnort.Je 100L.MwSt 100l',
          idMwStG       =   'Heizoel.Heizölpreis.Wohnort.Gesamt.MwSt Gesamt',
          idZuschlagN   =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Nettozuschlag 100l',
          idZuschlagGN  =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Nettozuschlag Gesamt',
          idPriceLN     =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Nettopreis 100l',
          idPriceGN     =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Nettopreis Gesamt',
          idLieferant   =   'Heizoel.Lieferant.Name',
          idWebseite    =   'Heizoel.Lieferant.Webseite',
          idDate        =   'Heizoel.Datum';
         
      createState(idPriceGB, {
         name: 'Heizölpreis Gesamt Brutto',
         desc: 'Heizölpreis Gesamt Brutto für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€'
      });
      
      createState(idPriceLB, {
         name: 'Heizölpreis je 100l Brutto',
         desc: 'Heizölpreis je 100l Brutto für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€/100l'
      });
      
      createState(idMwStL, {
         name: 'Mehrwertsteuer je 100l',
         desc: 'Mehrwertsteuer je 100l für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€/100l'
      });
      
      createState(idMwStG, {
         name: 'Mehrwertsteuer Gesamt',
         desc: 'Mehrwertsteuer Gesamt für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€'
      });
      
      createState(idZuschlagN, {
         name: 'Zuschlag je 100l Netto',
         desc: 'Zuschlag je 100l Netto für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€/100l'
      });
      
      createState(idZuschlagGN, {
         name: 'Zuschlag Gesamt Netto',
         desc: 'Zuschlag Gesamt Netto für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€'
      });
      
      createState(idPriceLN, {
         name: 'Heizölpreis je 100l Netto',
         desc: 'Heizölpreis je 100l Netto für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€/100l'
      });
      
      createState(idPriceGN, {
         name: 'Heizölpreis Gesamt Netto',
         desc: 'Heizölpreis Gesamt Netto für heute',
         type: 'number',
         def: 0,
         min: 0,
         unit: '€'
      });
      
      createState(idLieferant, {
         name: 'Lieferant',
         desc: 'Lieferant für heute',
         type: 'string',
         unit: ' '
      });
      
      createState(idWebseite, {
         name: 'esyoil.com Webseite von Lieferant',
         desc: 'esyoil.com Webseite von Lieferant',
         type: 'string',
         unit: ' '
      });
      
      createState(idDate, {
         name: '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);
             zwischenspeicher = zwischenspeicher.trim();
             if (logging) log(zwischenspeicher);
             return(zwischenspeicher);
         } else {
             zwischenspeicher = 'Fehler beim Ausschneiden';
             log(zwischenspeicher, 'error');
             return(0);
         }
      }
       
      function findPrice (body) {   
         var text1 = '<li class="total_price_brutto">',                                                               // erstes Auftauchen
             text2 = '&thinsp;&euro;</li>';                                                                           // erstes Auftauchen
         price = extractText(body,text1,text2); 
         var price_array = price.split('.');
         price = price_array[0] + price_array[1];     
         price_array = price.split(',');
         price = price_array[0] + '.' + price_array[1];
         //price = price.toFixed(2);
         price = parseFloat(price);
         priceLB = price / 50;
         priceLB = priceLB.toFixed(2);   
         priceLB = parseFloat(priceLB);      
         MwStG = price / 119 * 19;
         MwStG = MwStG.toFixed(2);
         MwStG = parseFloat(MwStG);
         MwStL = priceLB / 119 * 19;
         MwStL = MwStL.toFixed(2);
         MwStL = parseFloat(MwStL);
         if (logging) log('Heizöl Preis: ' + price + ' EUR');
      
         setState(idPriceLB, parseFloat(priceLB,10));
         setState(idPriceGB, parseFloat(price,10));
         setState(idMwStG, parseFloat(MwStG,10));                                                                                    // Wert in Objekt schreiben
         setState(idMwStL, parseFloat(MwStL,10));                                                                                    // Wert in Objekt schreiben
      }
      
      function findZuschlag (body) {   
         var text1 = '<dd data-polyfill-hidden class="delivery-charge">+&nbsp;',                                      // erstes Auftauchen
             text2 = '<dt data-polyfill-hidden class="vat">';                                                         // erstes Auftauchen
         var zuschlag = extractText(body,text1,text2);
         var zuschlagLN = zuschlag.replace("&nbsp;€</dd>","");
         var zuschlag_array = zuschlagLN.split(',');
         zuschlagLN = zuschlag_array[0] + '.' + zuschlag_array[1];   
         //zuschlagLN = zuschlagLN.toFixed(2);
         zuschlagLN = parseFloat(zuschlagLN);   
         setState(idZuschlagN, parseFloat(zuschlagLN,10.00));   
         var zuschlagG = zuschlagLN * 49.8;
         zuschlagG = zuschlagG.toFixed(2);
         zuschlagG = parseFloat(zuschlagG);                                    
         var priceLN = priceLB - MwStL - zuschlagLN;
         priceLN = priceLN.toFixed(2);
         priceLN = parseFloat(priceLN);
         var priceGN = price - MwStG - zuschlagG;
         priceGN = priceGN.toFixed(2);
         priceGN = parseFloat(priceGN);   
         if (logging) log('Zuschlag: ' + zuschlagLN + ' EUR');
         
         setState(idZuschlagGN, parseFloat(zuschlagG,10));  
         setState(idPriceLN, parseFloat(priceLN,10));                                                                                // Wert in Objekt schreiben
         setState(idPriceGN, parseFloat(priceGN,10));                                                                                // Wert in Objekt schreiben
      }
      
      function findLieferant (body) {
         var text1 = '<div data-polyfill-hidden style="width:330px;word-wrap:break-word;">',		                    // erstes Auftauchen
             text2 = '<br data-polyfill-hidden>';                                                                     // erstes Auftauchen
         var lieferant = extractText(body,text1,text2); 
         lieferant = lieferant.replace(" ","");
         lieferant = lieferant.replace(/&nbsp;/g," ");
         
         setState(idLieferant, lieferant);                                                                            // Wert in Objekt schreiben
      }
      
      function findWebseite (body) {
         var text1 = '<a class="img provider-logo-container" tabindex="-1" href="',		                            // erstes Auftauchen
             text2 = 'class="lazy provider-logo';                                                                     // erstes Auftauchen
         var web = extractText(body,text1,text2);
         web = web.replace(/" "/g,"");
         web = web.replace(/">/g,"");
         web = web.replace(/<img/g,"");   
         web = web.replace('"><imgclass="lazyprovider-logo"',"");
         web = 'https://www.esyoil.com/heizoel-haendler/' + web;  
      
         setState(idWebseite, web);                                                                                   // Wert in Objekt schreiben
      }  
       
      function findDate (body) {   
         var text1 = '<strong>Aktuelle Heizölpreise</strong>:<span id="h4-until-base-3"> 90530 Wendelstein von ',     // erstes Auftauchen + 1 Tag
             text2 = ' Uhr</span>    </h1>';                                                                          // erstes Auftauchen
         var time = extractText(body,text1,text2); 
         var datum = new Date();
         var heute = datum.getDate() + "." + (datum.getMonth()+1) + "." + datum.getFullYear() + " " + time ;
         if (logging) log('Heizöl Datum: ' + heute);   
         setState(idDate, heute);                                                                                     // Wert in Objekt schreiben
      }
       
      function leseWebseite () {
         try {
             request(link, function (error, response, body) {
                 if (!error && response.statusCode == 200) {                                                          // kein Fehler, Inhalt in body
                     findPrice (body);               
                     findZuschlag (body);
                     findLieferant (body);
                     findWebseite (body);
                     findDate (body);               
                     log('Heizöl-Preis von esyoil.com eingelesen');
                 } else log(error,'error');                                                                           // Error beim Einlesen
             });
         } catch (e) {
             log('Fehler (try) leseWebseite: ' + e, 'error');
         }   
      }
       
      // bei Skriptstart
      leseWebseite();
       
      // Schedule
      schedule("59 * * * *", leseWebseite);
      

      Hier das angepasste View:
      Heizölview.txt

      liv-in-sky sigi234 2 Replies Last reply Reply Quote 0
      • C
        ChrisXY last edited by

        DVielen Dank das du das teilst 😉 Kann ich "bald" echt gut brauchen.

        1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @Oli last edited by

          @Oliver-Böhm

          1how-marvin-the-paranoid-android-spends-his-weekends-klein.png tolle arbeit

          1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @Oli last edited by sigi234

            @Oliver-Böhm

            Hallo, habe es mal getestet, Lieferantendaten bekomme ich keine.
            Ok, da muss ich im Skript auf Ösi umstellen, gibt es auch für at.

            https://www.heizoel24.at/

            Screenshot (3669).png

            O 1 Reply Last reply Reply Quote 0
            • O
              Oli @sigi234 last edited by

              @sigi234

              ich hole die Daten nicht von Heizöl24, sondern von esyoil, eventuell musst du den Link für Österreich anpassen.
              Gruß Oliver

              R sigi234 2 Replies Last reply Reply Quote 0
              • R
                ReverZ @Oli last edited by

                @Oliver-Böhm

                Re: (gelöst) Ölpreis

                Der Preis für 100l stimmt irgendwie nicht.

                Gesammtbrutto (für 3000 Liter): 2038.47 €
                Unter Heizöl -> Heizölpreis -> Allgemein -> Preis: 66.96 €

                Aber unter Heizöl ->Heizölpreis -> Wohnort -> Je 100L steht dann folgendes
                Je 100 L: 40.77 €/100l

                Wenn das stimmen würde, würde sofort eine Großbestellung raus gehen 😊

                O 1 Reply Last reply Reply Quote 0
                • sigi234
                  sigi234 Forum Testing Most Active @Oli last edited by sigi234

                  @Oliver-Böhm sagte in (gelöst) Ölpreis:

                  Link für Österreich anpassen

                  Wo und in welchen Skript?
                  Ich glaube esyoli ist nur für DE

                  Sorry, Skript ist für mich Bahnhof.........bin eher der Vis Freund.........😀

                  O 1 Reply Last reply Reply Quote 0
                  • O
                    Oli @ReverZ last edited by Oli

                    @ReverZ

                    was sagt den die Homepage von esyoli.com?
                    Sind auf der Homepage zusätzliche Lieferkosten aufgeführt?

                    Ich bin momentan unterwegs, ich schaue mir das heute Abend an.

                    R 1 Reply Last reply Reply Quote 0
                    • O
                      Oli @sigi234 last edited by

                      @sigi234

                      schau bitte erstmal, ob esyoli.com Ölpreise für Österreich bereitstellt.
                      Die Seite von Heizöl24 kann nicht geparst werden, da im Quellcode keine detailierte Informationen vorhanden sind.

                      1 Reply Last reply Reply Quote 0
                      • R
                        ReverZ @Oli last edited by

                        @Oliver-Böhm

                        Nein und der Gesamtpreis stimmt mit der Homepage überein.
                        Lediglich der 100L-Preis ist unterschiedlich.

                        In iobroker: 40.77 €/100l (brutto)
                        Auf der Website: 67,95 €/100l (brutto)

                        Danke, ich checke auch nochmal alle Orte die User-Konfiguration brauchen.

                        O 1 Reply Last reply Reply Quote 0
                        • O
                          Oli @ReverZ last edited by

                          @ReverZ
                          dann liegt es an den nicht vorhandenen zusätzlichen Lieferkosten, ist mir gestern schon aufgefallen, bin aber noch nicht dazu gekommen dies zu bereinigen.

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            ReverZ @Oli last edited by ReverZ

                            @Oliver-Böhm

                            Nein, im Script wird einfach der Preis durch 50 dividiert

                            priceLB = price / 50;
                            
                            

                            Die 50 darf hier nicht hart codiert werden, da du von deinen 5000 Litern Gesamtmenge ausgegangen bist.
                            In dem Fall stimmt das Ergebnis natürlich. Wenn du aber - wie ich z.b.- 3000 Liter eingegeben hast, stimmt der 100L-Preis dann nicht mehr.

                            Müsste also entweder aus dem HTML ausgelesen werden oder errechnet durch

                            priceLB = price / <Liefermenge> * 100;
                            
                            O 1 Reply Last reply Reply Quote 0
                            • O
                              Oli @ReverZ last edited by

                              @ReverZ
                              stimmt, da hast du recht, daran merkt man, dass ich Script-Anfänger bin :-).

                              Für Verbesserungen oder Vereinfachung der Scripte bin ich immer dankbar.

                              1 Reply Last reply Reply Quote 0
                              • O
                                Oli last edited by

                                Hallo zusammen,

                                anbei ein kleines Update:

                                1. Vis wurde neu gestaltet, die Bestelldaten können jetzt im Vis direkt über Textfelder und Dropdownfelder eingestellt werden.

                                ab342e77-6001-46c2-99f0-3c8ecae13d6e-image.png

                                Heizölview.txt

                                1. Die Javascripts wurden angepasst und einige Fehler beseitigt. Danke für den Hinweis @ReverZ .

                                Die neuen Scripte füge ich im Anhang bei.

                                Script 1: Erstellt alle nötigen States, bitte einmal manuell ausführen.

                                /* Legt alle nötigen States an.
                                  Dieses Schript zu Beginn einmal manuell ausführen.
                                */
                                
                                // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                                var idLiter            =   'Heizoel.Bestelldaten.Liefermenge',
                                   idPLZ              =   'Heizoel.Bestelldaten.Lieferort',
                                   idEntladestellen   =   'Heizoel.Bestelldaten.Entladestellen',
                                   idHeizölsorte      =   'Heizoel.Bestelldaten.Heizölsorte',
                                   idHeizölsorteID    =   'Heizoel.Bestelldaten.Heizölsorte ID',
                                   idBezahlung        =   'Heizoel.Bestelldaten.Zahlungsart',
                                   idBezahlungID      =   'Heizoel.Bestelldaten.Zahlungsart ID',
                                   idLink             =   'Heizoel.Bestelldaten.Weblink',
                                   idPriceGB          =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Bruttopreis Gesamt',
                                   idPriceLB          =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Bruttopreis 100l',
                                   idMwStL            =   'Heizoel.Heizölpreis.Wohnort.Je 100L.MwSt 100l',
                                   idMwStG            =   'Heizoel.Heizölpreis.Wohnort.Gesamt.MwSt Gesamt',
                                   idZuschlagN        =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Nettozuschlag 100l',
                                   idZuschlagGN       =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Nettozuschlag Gesamt',
                                   idPriceLN          =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Nettopreis 100l',
                                   idPriceGN          =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Nettopreis Gesamt',
                                   idLieferant        =   'Heizoel.Lieferant.Name',
                                   idWebseite         =   'Heizoel.Lieferant.Webseite',
                                   idPriceA           =   'Heizoel.Heizölpreis.Allgemein.Preis',
                                   idTrend            =   'Heizoel.Heizölpreis.Allgemein.Trend zum Vortag',
                                   idPercent          =   'Heizoel.Heizölpreis.Allgemein.Änderung zum Vortag',    
                                   idDate             =   'Heizoel.Datum';   
                                  
                                createState(idLiter, {
                                  name: 'Liefermenge',
                                  desc: 'Liefermenge',
                                  type: 'string',
                                  unit: ' '
                                });
                                createState(idPLZ, {
                                  name: 'Lieferort',
                                  desc: 'Lieferort',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idEntladestellen, {
                                  name: 'Entladestellen',
                                  desc: 'Entladestellen',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idHeizölsorte, {
                                  name: 'Heizölsorte',
                                  desc: 'Heizölsorte',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idHeizölsorteID, {
                                  name: 'Heizölsorte ID',
                                  desc: 'Heizölsorte ID',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idBezahlung, {
                                  name: 'Bezahlart',
                                  desc: 'Bezahlart',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idBezahlungID, {
                                  name: 'Bezahlart ID',
                                  desc: 'Bezahlart ID',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idLink, {
                                  name: 'Weblink von esyoil',
                                  desc: 'Weblink von esyoil',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idPriceGB, {
                                  name: 'Heizölpreis Gesamt Brutto',
                                  desc: 'Heizölpreis Gesamt Brutto für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€'
                                });
                                
                                createState(idPriceLB, {
                                  name: 'Heizölpreis je 100l Brutto',
                                  desc: 'Heizölpreis je 100l Brutto für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€/100l'
                                });
                                
                                createState(idMwStL, {
                                  name: 'Mehrwertsteuer je 100l',
                                  desc: 'Mehrwertsteuer je 100l für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€/100l'
                                });
                                
                                createState(idMwStG, {
                                  name: 'Mehrwertsteuer Gesamt',
                                  desc: 'Mehrwertsteuer Gesamt für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€'
                                });
                                
                                createState(idZuschlagN, {
                                  name: 'Zuschlag je 100l Netto',
                                  desc: 'Zuschlag je 100l Netto für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€/100l'
                                });
                                
                                createState(idZuschlagGN, {
                                  name: 'Zuschlag Gesamt Netto',
                                  desc: 'Zuschlag Gesamt Netto für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€'
                                });
                                
                                createState(idPriceLN, {
                                  name: 'Heizölpreis je 100l Netto',
                                  desc: 'Heizölpreis je 100l Netto für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€/100l'
                                });
                                
                                createState(idPriceGN, {
                                  name: 'Heizölpreis Gesamt Netto',
                                  desc: 'Heizölpreis Gesamt Netto für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€'
                                });
                                
                                createState(idLieferant, {
                                  name: 'Lieferant',
                                  desc: 'Lieferant für heute',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idWebseite, {
                                  name: 'esyoil.com Webseite von Lieferant',
                                  desc: 'esyoil.com Webseite von Lieferant',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idDate, {
                                  name: 'Datum',
                                  desc: 'Heizölpreis Zeitstempel (als String)',
                                  type: 'string',
                                  def: ''
                                });
                                
                                createState(idPriceA, {
                                  name: 'Heizölpreis für heute',
                                  desc: 'Heizölpreis für heute',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  unit: '€/100l'
                                });
                                createState(idPercent, {
                                  name: 'Heizölpreisänderung in Prozent zum Vortag',
                                  desc: 'Heizölpreisänderung zum Vortag',
                                  type: 'number',
                                  def: 0,
                                  min: 0,
                                  max: 100,
                                  unit: '%'
                                });
                                
                                createState(idTrend, {
                                  name: 'Trend zum Vortag',
                                  desc: 'Trend zum Vortag',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState('javascript.0.Heizoel.Skriptstart', false, {name: 'Skript bei VIS Tastendruck starten'});
                                
                                
                                
                                

                                Scripts 2: Wird ausgeführt, sobald sich in den Bestelldaten etwas ändert und der Abfragebutton betätigt wird. Es wird ein angepasster Link für die Preisabfrage erstellt.

                                /* Ö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
                                {1}
                                erstellt: 03.08.2016 von pix
                                12.11.2016 Webseite liefert nicht mehr Prognose, sondern Ist-Preis. Skript angepasst
                                29.08.2017 SKRIPT AUSGESCHALTET, DA NICHT IN GEBRAUCH
                                {2}
                                Angepasst am 14.07.2019 von Oliver Böhm, verwendet für "Bestelldaten für Heizölbestellung eintragen"
                                */
                                
                                on('javascript.0.Heizoel.Skriptstart', function (obj) {
                                   if (!obj.state.ack && obj.state.val) {
                                
                                       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 idheizöl = getState('javascript.0.Heizoel.Bestelldaten.Heizölsorte ID').val;
                                       var idzahlart = getState('javascript.0.Heizoel.Bestelldaten.Zahlungsart ID').val;
                                       var entladestellen = getState('javascript.0.Heizoel.Bestelldaten.Entladestellen').val;
                                       var liefermenge = getState('javascript.0.Heizoel.Bestelldaten.Liefermenge').val;                                       
                                       var lieferort = getState('javascript.0.Heizoel.Bestelldaten.Lieferort').val;                                        
                                
                                       var idLiter          =   'Heizoel.Bestelldaten.Liefermenge',
                                           idPLZ            =   'Heizoel.Bestelldaten.Lieferort',
                                           idEntladestellen =   'Heizoel.Bestelldaten.Entladestellen',
                                           idHeizölsorte    =   'Heizoel.Bestelldaten.Heizölsorte',
                                           idBezahlung      =   'Heizoel.Bestelldaten.Zahlungsart',
                                           idLink           =   'Heizoel.Bestelldaten.Weblink';   
                                   
                                       function findLink () {   
                                           if (idheizöl == "8") {
                                               heizölsorte = "Normal Schwefelarm";                    
                                           } else if (idheizöl == "4") {
                                               heizölsorte = "Premium Schwefelarm";                    
                                           } else if (idheizöl == "9") {
                                               heizölsorte = "Klimaneutral";                  
                                           }    
                                  
                                           if (idzahlart == "1") {
                                               zahlart = "Barzahlung";                    
                                           } else if (idzahlart == "2") {
                                               zahlart = "EC-Karte";                    
                                           } else if (idzahlart == "4") {
                                               zahlart = "Lastschrift";                  
                                           } else if (idzahlart == "10") {
                                               zahlart = "Ratenkauf";                  
                                           } else if (idzahlart == "6") {
                                               zahlart = "Rechnung";                  
                                           } else if (idzahlart == "3") {
                                               zahlart = "Vorkasse";                  
                                           } else if (idzahlart == "5") {
                                               zahlart = "Wärmekonto";                  
                                           }
                                 
                                           // Erstellung des Abfragelinks
                                           var url = 'https://www.esyoil.com/'  
                                             + '?calc%5Bzipcode%5D='          + lieferort
                                             + '&calc%5Bamount%5D='           + liefermenge
                                             + '&calc%5Bunloading_points%5D=' + entladestellen
                                             + '&calc%5Bprod%5D='             + idheizöl
                                             + '&calc%5Bpayment_type%5D='     + idzahlart 
                                             + '&calc%5Bexpress%5D=0&calc%5Bdelivery_date_sel%5D=&calc%5Bhose%5D=40m&calc%5Bshort_vehicle%5D=&calc%5Bsubmit%5D='         // driving = default
                                                           
                                           setState(idLink, url);                                           // Wert in Objekt schreiben
                                           setState(idBezahlung, zahlart);                                  // Wert in Objekt schreiben         
                                           setState(idHeizölsorte, heizölsorte);                            // Wert in Objekt schreiben
                                           setState('javascript.0.Heizoel.Skriptstart', "false");                            // Wert in Objekt schreiben
                                       }
                                 
                                       function leseWebseite () {
                                           try {
                                                   request(link, function (error, response, body) {
                                               if (!error && response.statusCode == 200) {              // kein Fehler, Inhalt in body
                                                   findLink ();                              
                                                   log('Bestelldaten eingelesen');
                                               } else log(error,'error');                               // Error beim Einlesen
                                               });
                                           } catch (e) {
                                               log('Fehler (try) leseWebseite: ' + e, 'error');
                                           }   
                                       }
                                 
                                       // bei Skriptstart
                                       leseWebseite();
                                   }
                                });
                                    
                                

                                Script 3: Wird ausgeführt, sobald sich in den Bestelldaten etwas ändert und der Abfragebutton betätigt wird und jede Stunde. Hier findet die eigentliche Preisabfrage für den Wohnort statt.

                                /* Ö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
                                {1}
                                erstellt: 03.08.2016 von pix
                                12.11.2016 Webseite liefert nicht mehr Prognose, sondern Ist-Preis. Skript angepasst
                                29.08.2017 SKRIPT AUSGESCHALTET, DA NICHT IN GEBRAUCH
                                {2}
                                Angepasst am 14.07.2019 von Oliver Böhm, verwendet für "Heizölpreis für Wohnort abfragen"
                                Dieses Script wird automatisch ausgeführt, sobald sich etwas in den Bestelldaten ändert, und alle 59 Minuten.
                                Quelle:  www.esyoil.com
                                */
                                
                                on({id:"javascript.0.Heizoel.Bestelldaten.Weblink", change: 'ne'}, function (obj) { 
                                var logging = false;
                                
                                // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                                var request = require('request');
                                var price;
                                var priceLB;
                                var MwStG;
                                var MwStL;
                                var zuschlag;
                                var zuschlagLN;
                                var Liefermenge = getState('javascript.0.Heizoel.Bestelldaten.Liefermenge').val;
                                var link = getState('javascript.0.Heizoel.Bestelldaten.Weblink').val;
                                var idPriceGB     =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Bruttopreis Gesamt',
                                   idPriceLB     =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Bruttopreis 100l',
                                   idMwStL       =   'Heizoel.Heizölpreis.Wohnort.Je 100L.MwSt 100l',
                                   idMwStG       =   'Heizoel.Heizölpreis.Wohnort.Gesamt.MwSt Gesamt',
                                   idZuschlagN   =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Nettozuschlag 100l',
                                   idZuschlagGN  =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Nettozuschlag Gesamt',
                                   idPriceLN     =   'Heizoel.Heizölpreis.Wohnort.Je 100L.Nettopreis 100l',
                                   idPriceGN     =   'Heizoel.Heizölpreis.Wohnort.Gesamt.Nettopreis Gesamt',
                                   idLieferant   =   'Heizoel.Lieferant.Name',
                                   idWebseite    =   'Heizoel.Lieferant.Webseite',      
                                   idDate        =   'Heizoel.Datum';
                                
                                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);
                                      zwischenspeicher = zwischenspeicher.trim();
                                      if (logging) log(zwischenspeicher);
                                      return(zwischenspeicher);
                                  } else {
                                      zwischenspeicher = 'Fehler beim Ausschneiden';
                                      log(zwischenspeicher, 'error');
                                      return(0);
                                  }
                                }
                                
                                function findPrice (body) {   
                                  var text1 = '<li class="total_price_brutto">',                                                               
                                      text2 = '&thinsp;&euro;</li>';                                                                          
                                  price = extractText(body,text1,text2); 
                                  var price_array = price.split('.');
                                  price = price_array[0] + price_array[1];     
                                  price_array = price.split(',');
                                  price = price_array[0] + '.' + price_array[1];   
                                  price = parseFloat(price);
                                  priceLB = price / Liefermenge * 100;
                                  priceLB = priceLB.toFixed(2);   
                                  priceLB = parseFloat(priceLB);      
                                  MwStG = price / 119 * 19;
                                  MwStG = MwStG.toFixed(2);
                                  MwStG = parseFloat(MwStG);
                                  MwStL = priceLB / 119 * 19;
                                  MwStL = MwStL.toFixed(2);
                                  MwStL = parseFloat(MwStL);
                                  if (logging) log('Heizöl Preis: ' + price + ' EUR');
                                
                                  setState(idPriceLB, parseFloat(priceLB,10));
                                  setState(idPriceGB, parseFloat(price,10));
                                  setState(idMwStG, parseFloat(MwStG,10));                                                                                    
                                  setState(idMwStL, parseFloat(MwStL,10));                                                                                   
                                }
                                
                                function findLieferant (body) {
                                  var text1 = '<div data-polyfill-hidden style="width:330px;word-wrap:break-word;">',		                    
                                      text2 = '<br data-polyfill-hidden>';                                                                     
                                  var lieferant = extractText(body,text1,text2); 
                                  lieferant = lieferant.replace(" ","");
                                  lieferant = lieferant.replace(/&nbsp;/g," ");
                                  
                                  setState(idLieferant, lieferant);                                                                            
                                }
                                
                                function findWebseite (body) {
                                  var text1 = '<a class="img provider-logo-container" tabindex="-1" href="',		                            
                                      text2 = 'class="lazy provider-logo';                                                                     
                                  var web = extractText(body,text1,text2);
                                  web = web.replace(/" "/g,"");
                                  web = web.replace(/">/g,"");
                                  web = web.replace(/<img/g,"");   
                                  web = web.replace('"><imgclass="lazyprovider-logo"',"");
                                  web = 'https://www.esyoil.com/heizoel-haendler/' + web;  
                                
                                  setState(idWebseite, web);                                                                                   // Wert in Objekt schreiben
                                }  
                                
                                function findDate (body) {   
                                  var text1 = '<strong>Aktuelle Heizölpreise</strong>:<span id="h4-until-base-3">',                            
                                      text2 = ' Uhr</span>    </h1>';                                                                          
                                  var time = extractText(body,text1,text2);
                                  var time_array = time.split('von');
                                  time = time_array[1]; 
                                  var datum = new Date();
                                  var heute = datum.getDate() + "." + (datum.getMonth()+1) + "." + datum.getFullYear() + ", " + time ;
                                  if (logging) log('Heizöl Datum: ' + heute);   
                                  setState(idDate, heute);                                                                                     // Wert in Objekt schreiben
                                }
                                
                                function findZuschlagLN (body) {   
                                  var text1 = '<li class="pricelist-entry" data-order="1"><!-- Dealer 2 BEGIN -->',                            
                                      text2 = '<dd data-polyfill-hidden class="delivery-charge">+&nbsp;';          
                                  var start = body.indexOf(text1);
                                  var ende = body.indexOf(text2);   
                                  if (ende < start) {                                                                                          // Fehler abfangen, falls Zuschlag nicht vorhanden
                                       text1 = '<dd data-polyfill-hidden class="delivery-charge">+&nbsp;',                                      
                                       text2 = '<dt data-polyfill-hidden class="vat">';                                                         
                                       zuschlag = extractText(body,text1,text2);
                                       zuschlagLN = zuschlag.replace("&nbsp;€</dd>","");
                                  } else {
                                       zuschlagLN = "0,00";
                                  }   
                                  var zuschlag_array = zuschlagLN.split(',');
                                  zuschlagLN = zuschlag_array[0] + '.' + zuschlag_array[1];   
                                  zuschlagLN = parseFloat(zuschlagLN);   
                                  setState(idZuschlagN, parseFloat(zuschlagLN,10.00));
                                  var priceLN = priceLB - MwStL - zuschlagLN;
                                  priceLN = priceLN.toFixed(2);
                                  priceLN = parseFloat(priceLN);
                                  setState(idPriceLN, parseFloat(priceLN,10));   
                                }      
                                
                                function findZuschlagG (body) {
                                  var text1 = '<li class="pricelist-entry" data-order="1"><!-- Dealer 2 BEGIN -->',                            
                                      text2 = '<dd data-polyfill-hidden class="delivery-charge">+&nbsp;';          
                                  var start = body.indexOf(text1);
                                  var ende = body.indexOf(text2);   
                                  if (ende < start) {                                                      
                                      text1 = '<dt data-polyfill-hidden class="net">Gesamtbetrag <span data-polyfill-hidden class="description">(netto)</span></dt>',                                                   
                                      text2 = '<dt data-polyfill-hidden class="gross">Gesamtbetrag <span data-polyfill-hidden class="description">(brutto)</span></dt>';                                          
                                      var body = extractText(body,text1,text2);   
                                      text1 = '<dd data-polyfill-hidden class="delivery-charge">+&nbsp;',                                      
                                      text2 = '<dt data-polyfill-hidden class="vat">zzgl. 19 % gesetzl. MwSt.</dt>';                                                         
                                      var zuschlagG = extractText(body,text1,text2);        
                                      zuschlagG = zuschlagG.replace("&nbsp;€</dd>","");
                                  } else {
                                      var zuschlagG = "0,00";
                                  }  
                                  var zuschlag_array = zuschlagG.split(',');
                                  zuschlagG = zuschlag_array[0] + '.' + zuschlag_array[1];
                                  zuschlagG = parseFloat(zuschlagG);   
                                  var priceGN = price - MwStG - zuschlagG;
                                  priceGN = priceGN.toFixed(2);
                                  priceGN = parseFloat(priceGN);   
                                  if (logging) log('Zuschlag: ' + zuschlagG + ' EUR');   
                                  setState(idZuschlagGN, parseFloat(zuschlagG,10));                                                                                   
                                  setState(idPriceGN, parseFloat(priceGN,10));                                                                                   
                                }
                                
                                function leseWebseite () {
                                  try {
                                      request(link, function (error, response, body) {
                                          if (!error && response.statusCode == 200) {                                                          // kein Fehler, Inhalt in body
                                              findPrice (body);               
                                              findLieferant (body);
                                              findWebseite (body);
                                              findDate (body);
                                              findZuschlagLN (body);               
                                              findZuschlagG (body);               
                                              log('Heizöl-Preis von esyoil.com eingelesen');
                                          } else log(error,'error');                                                                           // Error beim Einlesen
                                      });
                                  } catch (e) {
                                      log('Fehler (try) leseWebseite: ' + e, 'error');
                                  }   
                                }
                                
                                // bei Skriptstart
                                leseWebseite();
                                
                                // Schedule
                                schedule("59 * * * *", leseWebseite);
                                });
                                
                                

                                Script 4: Wird ausgeführt, sobald sich nach einer Preisabfrage der günstigste Anbieter ändert. Hier werden die Daten des Anbieters abgefragt.

                                /* Ö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
                                {1}
                                erstellt: 03.08.2016 von pix
                                12.11.2016 Webseite liefert nicht mehr Prognose, sondern Ist-Preis. Skript angepasst
                                29.08.2017 SKRIPT AUSGESCHALTET, DA NICHT IN GEBRAUCH
                                {2}
                                Angepasst am 14.07.2019 von Oliver Böhm, verwendet für "Günstigsten Heizöl-Lieferanten abfragen".
                                Dieses Script wird automatisch ausgeführt, sobald sich nach einer Preisabfrage der günstigste Anbieter ändert.
                                Quelle:  www.esyoil.com
                                */
                                
                                on({id:"javascript.0.Heizoel.Lieferant.Webseite", change: 'ne'}, function (obj) {
                                var logging = false;
                                var link = getState('javascript.0.Heizoel.Lieferant.Webseite').val; 
                                
                                // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                                var request = require('request');
                                var strasse;
                                var plz;
                                var ort;
                                var fax;
                                var idAdresse = 'Heizoel.Lieferant.Adresse';
                                var idTelefon = 'Heizoel.Lieferant.Telefon';
                                var idFax     = 'Heizoel.Lieferant.Fax';
                                var idMail    = 'Heizoel.Lieferant.Mail';
                                
                                createState(idAdresse, {
                                  name: 'Lieferantenadresse',
                                  desc: 'Lieferantenadresse',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idTelefon, {
                                  name: 'Lieferanten Telefonnummer',
                                  desc: 'Lieferanten Telefonnummer',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idFax, {
                                  name: 'Lieferanten Faxnummer',
                                  desc: 'Lieferanten Faxnummer',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                createState(idMail, {
                                  name: 'Lieferanten Mailadresse',
                                  desc: 'Lieferanten Mailadresse',
                                  type: 'string',
                                  unit: ' '
                                });
                                
                                
                                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);
                                      zwischenspeicher = zwischenspeicher.trim();
                                      if (logging) log(zwischenspeicher);
                                      return(zwischenspeicher);
                                  } else {
                                      zwischenspeicher = 'Fehler beim Ausschneiden';
                                      log(zwischenspeicher, 'error');
                                      return(0);
                                  }
                                }
                                
                                function findStraße (body) {
                                  var text1 = '"streetAddress": "',                                            // erstes Auftauchen
                                      text2 = '"email": [';                                                    // erstes Auftauchen
                                  straße = extractText(body,text1,text2);
                                  straße = straße.replace(/"/g,"");
                                  straße = straße.replace(/,/g,"");   
                                }
                                
                                function findPLZ (body) {
                                  var text1 = '"postalCode": "',                                               // erstes Auftauchen
                                      text2 = '"streetAddress": ';                                             // erstes Auftauchen
                                  plz = extractText(body,text1,text2);
                                  plz = plz.replace(/"/g,"");
                                  plz = plz.replace(/,/g,"");   
                                }
                                
                                function findOrt (body) {
                                  var text1 = '"addressLocality": "',                                          // erstes Auftauchen
                                      text2 = '"postalCode": "';                                               // erstes Auftauchen
                                  ort = extractText(body,text1,text2);
                                  ort = ort.replace(/"/g,"");
                                  ort = ort.replace(/,/g,"");
                                  setState(idAdresse, straße + ", " + plz + " " + ort);   
                                }
                                
                                function findTelefon (body) {
                                  var text1 = '"telephone": "',                                                // erstes Auftauchen
                                      text2 = '"aggregateRating": ';                                           // erstes Auftauchen
                                  var telefon = extractText(body,text1,text2);
                                  telefon = telefon.replace(/"/g,"");
                                  telefon = telefon.replace(/}/g,"");
                                  telefon = telefon.replace(/,/g,"");
                                  setState(idTelefon, telefon);   
                                }
                                
                                function findFax (body) {
                                  var text1 = '"faxNumber": "',                                                // erstes Auftauchen
                                      text2 = '"telephone": "';                                                // erstes Auftauchen
                                  fax = extractText(body,text1,text2);
                                  if (fax.length > 15) {
                                      fax = "unbekannt";
                                  } else {
                                       fax = fax.replace(/"/g,"");   
                                       fax = fax.replace(/,/g,"");
                                  }    
                                  setState(idFax, fax);   
                                }
                                
                                function findMail (body) {
                                  if (fax == "unbekannt") {
                                       var text1 = '"email": [',                                                 // erstes Auftauchen
                                           text2 = '"telephone": "';                                             // erstes Auftauchen  
                                   } else {
                                       var text1 = '"email": [',                                                 // erstes Auftauchen
                                           text2 = '"faxNumber": "';                                             // erstes Auftauchen
                                   }                                                                 
                                  var mail = extractText(body,text1,text2);      
                                  mail = mail.replace(/"/g,"");
                                  mail = mail.replace(/,/g,"");
                                  mail = mail.replace(/]/g,"");
                                  var mail_array = mail.split(' ');
                                  mail = mail_array[0];
                                       
                                  setState(idMail, mail);   
                                }                             
                                
                                function leseWebseite () {
                                  try {
                                      request(link, function (error, response, body) {
                                          if (!error && response.statusCode == 200) {                          // kein Fehler, Inhalt in body
                                              findStraße (body);
                                              findPLZ (body);
                                              findOrt (body);
                                              findTelefon (body);
                                              findFax (body);
                                              findMail (body);
                                              log('Heizöl-Preis von esyoil.com eingelesen');
                                          } else log(error,'error');                                           // Error beim Einlesen
                                      });
                                  } catch (e) {
                                      log('Fehler (try) leseWebseite: ' + e, 'error');
                                  }
                                } 
                                
                                // bei Skriptstart
                                leseWebseite();
                                });
                                
                                

                                Script 5: Wird alle 59 Minuten ausgeführt. Hier wird die Differenz zum Vortag abgefragt.

                                /* Ö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
                                {1}
                                erstellt: 03.08.2016 von pix
                                12.11.2016 Webseite liefert nicht mehr Prognose, sondern Ist-Preis. Skript angepasst
                                29.08.2017 SKRIPT AUSGESCHALTET, DA NICHT IN GEBRAUCH
                                {2}
                                Angepasst am 14.07.2019 von Oliver Böhm, verwendet für "Heizölpreis Allgemein und Differenz zum Vortag abfragen".
                                Dieses Script wird automatisch alle 59 Minuten ausgeführt.
                                Quelle:  www.esyoil.com
                                */
                                
                                var logging = false;
                                var link = 'https://www.esyoil.com/%c3%b6lpreis';
                                
                                // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                                var request = require('request');
                                var idPriceA =   'Heizoel.Heizölpreis.Allgemein.Preis',
                                   idTrend =   'Heizoel.Heizölpreis.Allgemein.Trend zum Vortag',
                                   idPercent = 'Heizoel.Heizölpreis.Allgemein.Änderung zum Vortag';
                                   
                                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);
                                      zwischenspeicher = zwischenspeicher.trim();
                                      if (logging) log(zwischenspeicher);
                                      return(zwischenspeicher);
                                  } else {
                                      zwischenspeicher = 'Fehler beim Ausschneiden';
                                      log(zwischenspeicher, 'error');
                                      return(0);
                                  }
                                }
                                
                                function findNewBody (body) {   
                                  var text1 = '>Heizöl</a>',                                                   // erstes Auftauchen
                                      text2 = 'id="1-oelpreis-news"';                                          // erstes Auftauchen
                                  var body = extractText(body,text1,text2);   
                                }
                                
                                function findPrice (body) {   
                                  var text1 = '<td class="">',                                                 // erstes Auftauchen
                                      text2 = '€';                                                             // erstes Auftauchen
                                  var price = extractText(body,text1,text2); 
                                  var price_array = price.split(',');
                                  price = price_array[0] + '.' + price_array[1];
                                  price = parseFloat(price);
                                  if (logging) log('Heizöl Preis: ' + price + ' EUR');
                                  setState(idPriceA, parseFloat(price,10));                                     // Wert in Objekt schreiben
                                }
                                
                                function findPercent (body) {   
                                  var text1 = '<span class=" text-success">',                                  // erstes Auftauchen
                                      text2 = '%</span>';                                                      // erstes Auftauchen    
                                  var percent = extractText(body,text1,text2);   
                                  var ausschnitt = percent.slice(0, 1);
                                  percent = percent.replace(ausschnitt,"");   
                                  var percent_array = percent.split(',');
                                  percent = percent_array[0] + '.' + percent_array[1];
                                  percent = parseFloat(percent);
                                  if (logging) log('Heizöl Prozent: ' + percent.toFixed(2) + '%');
                                  setState(idPercent, percent);                                                // Wert in Objekt schreiben
                                  setState(idTrend, ausschnitt);                                               // Wert in Objekt schreiben
                                }
                                
                                function leseWebseite () {
                                  try {
                                      request(link, function (error, response, body) {
                                          if (!error && response.statusCode == 200) {                          // kein Fehler, Inhalt in body
                                              findNewBody (body);
                                              findPrice(body);
                                              findPercent(body);               
                                              log('Heizöl-Preis von esyoil.com eingelesen');
                                          } else log(error,'error');                                           // Error beim Einlesen
                                      });
                                  } catch (e) {
                                      log('Fehler (try) leseWebseite: ' + e, 'error');
                                  }   
                                }
                                
                                // bei Skriptstart
                                leseWebseite();
                                
                                // Schedule
                                schedule("59 * * * *", leseWebseite);
                                

                                Verbesserungen der Scripte, Fehlermeldungen und Anregungen nehme ich gerne entgegen.

                                Gruß
                                Oliver

                                R liv-in-sky 3 Replies Last reply Reply Quote 0
                                • R
                                  ReverZ @Oli last edited by ReverZ

                                  @Oliver-Böhm

                                  Danke für das Update!
                                  Ich denke da sind noch etwas Optimierungspotential drin.
                                  Was mir bis jetzt aufgefallen ist:
                                  Im Script 2 werden variablen wie "heizölsorte" und "zahlart" verwenden ohne diese zuvor zu deklarieren. Der JS-Editor meckert das sofort an.

                                  O 1 Reply Last reply Reply Quote 0
                                  • O
                                    Oli @ReverZ last edited by

                                    @ReverZ

                                    wie gesagt, bin blutiger Anfänger in Sachen Javascript.

                                    Danke für den Hinweis, ich wusste nicht mal, dass es einen Js-Editor gibt.🙄

                                    R 1 Reply Last reply Reply Quote 0
                                    • R
                                      ReverZ @Oli last edited by ReverZ

                                      @Oliver-Böhm

                                      In Script 3 setzt du die parseFloat-Funktion ein, übergibst aber statt zwei statt einem Argument:

                                         setState(idPriceLB, parseFloat(priceLB,10));
                                         setState(idPriceGB, parseFloat(price,10));
                                         setState(idMwStG, parseFloat(MwStG,10));                                                                                    
                                         setState(idMwStL, parseFloat(MwStL,10)); 
                                      

                                      Was willst du mit der "10" jeweils erreichen?

                                      O 1 Reply Last reply Reply Quote 0
                                      • O
                                        Oli @ReverZ last edited by

                                        @ReverZ

                                        eigentlich wollte ich damit erreichen, dass er mir 2 Nachkommastellen übergibt.

                                        R 1 Reply Last reply Reply Quote 0
                                        • R
                                          ReverZ @Oli last edited by

                                          @Oliver-Böhm

                                          OK. Wie verifizierst du denn die Syntax von deinem JS-Code wenn nicht im JS-Editor?
                                          Schreibst du den Code in Notepad und lädst die fertige JS-Datei dann irgendwo hoch?

                                          O 1 Reply Last reply Reply Quote 0
                                          • R
                                            ReverZ @Oli last edited by ReverZ

                                            @Oliver-Böhm

                                            Dann musst du mit .toFixed(2) arbeiten, was du ja zuvor für priceLB schon gemacht hast:

                                               priceLB = priceLB.toFixed(2);   
                                               priceLB = parseFloat(priceLB);
                                            

                                            Ausserdem musst du dich mehr mit Datentypen auseinandersetzen.
                                            Mathematische Operationen kann man nur auf Zahlen anwenden. Einige Werte deklarierst du allerdings als Strings und verwendest diese später in math. Formeln.

                                            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

                                            505
                                            Online

                                            32.1k
                                            Users

                                            80.7k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            15
                                            65
                                            14214
                                            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