Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Xml2js Probleme bis zum javascript restart…

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Xml2js Probleme bis zum javascript restart…

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

      Liebe Leute,

      ich hab mir das Script von audioconcept zum Einlesen und verarbeiten des TV-Spielfilm Fernsehprogramm (http://forum.iobroker.net/viewtopic.php … =20#p14792)auf meine Anwendung zurecht gebogen, mit dem Ergebnis, dass javascript sich vertschüsst 😞

      das ist der Fehler der dann im Log kommt:

      ! host-etv-raspi-1 2015-12-17 20:52:35 error instance system.adapter.javascript.0 terminated with code 6 (uncaught exception)
      ! TypeError: 2015-12-17 20:52:35 error at process._tickCallback (node.js:415:13)
      ! TypeError: 2015-12-17 20:52:35 error at _stream_readable.js:920:16
      ! TypeError: 2015-12-17 20:52:35 error at IncomingMessage.EventEmitter.emit (events.js:117:20)
      ! TypeError: 2015-12-17 20:52:35 error at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:962:12)
      ! TypeError: 2015-12-17 20:52:35 error at Request.EventEmitter.emit (events.js:117:20)
      ! TypeError: 2015-12-17 20:52:35 error at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1035:10)
      ! TypeError: 2015-12-17 20:52:35 error at Request.EventEmitter.emit (events.js:98:17)
      ! TypeError: 2015-12-17 20:52:35 error at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:198:22)
      ! TypeError: 2015-12-17 20:52:35 error at Request._callback (script.js.Spritpreise:42:9)
      ! TypeError: 2015-12-17 20:52:35 error at exports.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/xml2js.js:534:19)
      ! TypeError: 2015-12-17 20:52:35 error at Parser.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/xml2js.js:7:59)
      ! TypeError: 2015-12-17 20:52:35 error at Parser.exports.Parser.Parser.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/xml2js.js:506:16)
      ! TypeError: 2015-12-17 20:52:35 error at Parser.EventEmitter.emit (events.js:74:15)
      ! TypeError: 2015-12-17 20:52:35 error at TypeError (:null:null)
      ! TypeError: 2015-12-17 20:52:35 error Uncaught, unspecified "error" event.
      ! uncaught 2015-12-17 20:52:35 error exception: Uncaught, unspecified "error" event.

      und das wäre der Code:

      ! ```
      `function check_fav (Titel) {
      ! var x = Titel.indexOf(":");
      var y = Titel.indexOf("");
      var Name_Titel = Tanke1a.substring(x+1,y);
      ! var ist_fav = false;
      switch (Name_Titel) {
      case 'FE-Trading (Hofer-Parkplatz), 8700 Leoben':
      ist_fav = true;
      break;
      default:
      ist_fav = false;
      break;
      }
      return(ist_fav);
      }
      ! // Hauptschleife
      ! var parseString = require('xml2js').parseString;
      var request = require('request');
      ! request('http://www.oeamtc.at/feeds/sprit/diesel/steiermark', function (error, response, body) {
      if (!error && response.statusCode == 200) {
      parseString(body, {
      explicitArray: false,
      mergeAttrs: true
      },
      function (err, result) {
      if (err) {
      log("Fehler: " + err);
      } else {
      log("-------------------- Spritpreise eingelesen - " + result.rss.channel.title + " Anzahl: " + result.rss.channel.item.length);
      ! for(var i = 0; i < result.rss.channel.item.length; i++) {

      ====== ist_eine_fav = check_fav(result.rss.channel.item[i].title);
      }
      }
      });
      } else {
      log(error);
      }
      });`

      ! Wenn ich die markierte Zeile aktiviere, dann stürzt javascript ab, wenn ich sie auskommentiere, geht's...
      ! Was ist hier anders, als im TV-Spielfilm Script?
      ! btw - hier eine Testversion, die ohne Probleme funktioniert
      ! >! [spoiler]`~~[code]~~var parseString = require('xml2js').parseString;
      var request = require('request');
      //var log = console.log;
      ! request('http://www.oeamtc.at/feeds/sprit/diesel/steiermark', function (error, response, body) {
      if (!error && response.statusCode == 200) {
      ! parseString(body, {
      explicitArray: false,
      mergeAttrs: true
      },
      function (err, result) {
      //console.log(JSON.stringify(result, null, 2));
      ! if (err) {
      log("Fehler: " + err);
      } else {
      log("Result: " + result.rss.channel.title);
      log("Anzahl: " + result.rss.channel.item.length);
      }

                  for(var i = 0; i < result.rss.channel.item.length; i++) {
                      log("Titel " + i +": " + result.rss.channel.item[i].title);
                      //log("Beschreibung " + i +": " + result.rss.channel.item[i].description);
                      if (result.rss.channel.item[i].title == "0,957: FE-Trading (Hofer-Parkplatz), 8700 Leoben") {
                          setState ("javascript.0.Tankpreise.Tanke_1.a",result.rss.channel.item[i].title);
                          setState ("javascript.0.Tankpreise.Tanke_1.b",result.rss.channel.item[i].description);
      
                      }
                  }
              });
      } else  {
          log(error);
      }
      

      ! });
      ! // ab da nun die Auswertung
      ! var Tanke1a = getState("javascript.0.Tankpreise.Tanke_1.a").val;
      var x = Tanke1a.indexOf(":");
      var Tanke1_Preis = Tanke1a.substr(0, x);
      var y = Tanke1a.indexOf(", 8");
      var Tanke1_Name = Tanke1a.substring(x+1,y);
      log("Tanke1 Name : " + Tanke1_Name);
      log("Tanke1 Preis : " + Tanke1_Preis);
      ! var Tanke1b = getState("javascript.0.Tankpreise.Tanke_1.b").val;
      x = Tanke1b.indexOf(".");
      var Tanke1_Zeit = Tanke1b.substr(x-5, 5);
      log("Tanke1 Zeit : " + Tanke1_Zeit + " Uhr");`
      ! Grüße
      ! etv[/i][/i][/i][/i][/i][/code][/spoiler][/i]

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

        Du hast eine Variable, die nirgendwo definiert ist: Tanke1a

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

          sch…. - danke dir, das war's! Man sollte nicht am Abend und ohne Lesebrille programmieren 🙂

          Grüße

          etv

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          737
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          2
          3
          752
          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