Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Split is not a Function;Ölpreisskript

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Split is not a Function;Ölpreisskript

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
2 Beiträge 2 Kommentatoren 373 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    Adnim
    schrieb am zuletzt editiert von
    #1

    Hi!
    bekomme leider den Fehler,beim Ölpreisskript. Weiß jemand rat?

    javascript.0	2020-08-25 06:59:03.898	error	(15747) Error in request callback: TypeError: body.split is not a function
    javascript.0	2020-08-25 06:59:03.898	error	(15747) script.js.common.oelpreis: Fehler beim Ausschneiden
    
    /* Ö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);
            zwischenspeicher = zwischenspeicher.trim();
            if (logging) log(zwischenspeicher);
            return(zwischenspeicher);
        } else {
            zwischenspeicher = 'Fehler beim Ausschneiden';
            log(zwischenspeicher, 'error');
            return(0);
        }
    }
    
    //ok
    function findPrice (body) {   
        var text1 = 'class="middle">', // erstes Auftauchen
            text2 = '<span class="currency">€</span>';  // erstes Auftauchen
        var price = extractText(body,text1,text2); // 50,54 
        var price_array = price.split(',');
        price = price_array[0] + '.' + price_array[1];
        price = parseFloat(price);
        if (logging) log('Heizöl Preis: ' + price + ' EUR');
        setState(idPrice, parseFloat(price,)); // Wert in Objekt schreiben
    }
    
    function findPercent (body) {   
        var text1 = '<span class="lower"><span class=" red">', // erstes Auftauchen
            text2 = '%</span> zum Vortag</span>';  // erstes Auftauchen
        var percent = extractText(body,text1,text2); // 50,54 
        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
    }
    
    function findDate (body) {   
        var text1 = 'class="upper">', // erstes Auftauchen
            text2 = 'class="middle">'; // erstes Auftauchen
        var day = extractText(body,text1,text2); // &empty; 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('.'); // &empty; 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(); // &empty; 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);
    

    Danke!

    M 1 Antwort Letzte Antwort
    0
    • A Adnim

      Hi!
      bekomme leider den Fehler,beim Ölpreisskript. Weiß jemand rat?

      javascript.0	2020-08-25 06:59:03.898	error	(15747) Error in request callback: TypeError: body.split is not a function
      javascript.0	2020-08-25 06:59:03.898	error	(15747) script.js.common.oelpreis: Fehler beim Ausschneiden
      
      /* Ö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);
              zwischenspeicher = zwischenspeicher.trim();
              if (logging) log(zwischenspeicher);
              return(zwischenspeicher);
          } else {
              zwischenspeicher = 'Fehler beim Ausschneiden';
              log(zwischenspeicher, 'error');
              return(0);
          }
      }
      
      //ok
      function findPrice (body) {   
          var text1 = 'class="middle">', // erstes Auftauchen
              text2 = '<span class="currency">€</span>';  // erstes Auftauchen
          var price = extractText(body,text1,text2); // 50,54 
          var price_array = price.split(',');
          price = price_array[0] + '.' + price_array[1];
          price = parseFloat(price);
          if (logging) log('Heizöl Preis: ' + price + ' EUR');
          setState(idPrice, parseFloat(price,)); // Wert in Objekt schreiben
      }
      
      function findPercent (body) {   
          var text1 = '<span class="lower"><span class=" red">', // erstes Auftauchen
              text2 = '%</span> zum Vortag</span>';  // erstes Auftauchen
          var percent = extractText(body,text1,text2); // 50,54 
          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
      }
      
      function findDate (body) {   
          var text1 = 'class="upper">', // erstes Auftauchen
              text2 = 'class="middle">'; // erstes Auftauchen
          var day = extractText(body,text1,text2); // &empty; 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('.'); // &empty; 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(); // &empty; 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);
      

      Danke!

      M Offline
      M Offline
      mbw
      schrieb am zuletzt editiert von
      #2

      @Adnim wenn du das Logging aktivierst siehst du das es daran liegt, dass das Datum nicht korrekt ermittelt werden kann (Zeile 89).

      1 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      615

      Online

      32.5k

      Benutzer

      81.6k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe