NEWS
Split is not a Function;Ölpreisskript
-
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); // ∅ 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);
Danke!
-
@Adnim wenn du das Logging aktivierst siehst du das es daran liegt, dass das Datum nicht korrekt ermittelt werden kann (Zeile 89).