Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. RSS Parser

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

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

RSS Parser

Scheduled Pinned Locked Moved Skripten / Logik
48 Posts 11 Posters 12.1k Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BostilB Bostil

    Hallo RSS-Freunde,

    würde auch gerne den RSS-Feed der Tagesschau z. B. über das Script von @pix einbinden, aber scheitere. Folgendermaßen bin ich vorgegangen:

    • Skript von @pix 1:1 kopiert
    • Link der Tagesschau entsprechend in Zeile 26 des Scrips ersetzt: http://www.tagesschau.de/xml/rss2
    • Script gestartet
    • Widget ebenfalls in meine View kopiert
    • allerdings erscheint im "Live"Modus der View in der HTML-Tabelle bloß "undefined"

    Habt ihr eine Idee, was ich falsch mache ggf. noch bedenken muss, wenn ich das Script / Widget von oben einfach in meine View kopiere ?

    Danke euch!

    S Offline
    S Offline
    senger1985
    wrote on last edited by
    #41

    @Bostil siehe Post von Pix.

    Zitat:
    "Als Widget einfach ein HTML Widget nehmen und den Datenpunkt der TAbelle als Binding einfügen {javascript.2.RSS-Feed.VBB.Tabelle}"

    1 Reply Last reply
    1
    • BostilB Offline
      BostilB Offline
      Bostil
      wrote on last edited by Bostil
      #42

      Danke dir @senger1985 erstmal. Ich vermute, ich übersehe bloß eine "Kleinigkeit". Ich werde mal konkreter:

      1. Das ist nun mein Script (zu 100% das von @pix, bloß den RSS-Feed mal angepasst) und unter common > RSS-Feed abgespeichert und gestartet


      /* VIS VBB Tabelle
      {1}
      Bringt einen RSS-Feed als Tabelle in ioBroker
      setzt die Library xml2js voraus (in Javascript Einstellungen zufügen)
      {1}
      für http://forum.iobroker.net/viewtopic.php?f=21&t=1683
      {1}
      08.11.2015 erstellt von Pix (auf Basis von Bluefox Code) für Griesemer
      29.10.2019 angepasst von Pix (XML Element Namen mit Bindstrich (Hyphen) werden nkicht ausgelesen "vbb-name")
      {1}
      */
      createState('RSS-Feed.VBB.Tabelle', "", {
      write: true,
      read: true,
      name: 'RSS-Feed VBB Tabelle',
      type: 'string',
      desc: 'VBB RSS Feed als HTML Tabelle'
      });
      createState('RSS-Feed.VBB.Optin', true, {
      write: true,
      read: true,
      name: 'Optin RSS Feeds abrufen',
      type: 'boolean',
      desc: 'Sollen RSS-Feeds abgerufen werden?'
      });
      var link = 'https://www.computerbase.de/rss/news.xml';
      var idOptin = 'RSS-Feed.Optin',
      optin_beschreibung = 'RSS Feed',
      idFeedTabelle = 'RSS-Feed.VBB.Tabelle';

      function RSS_einlesen() { // alle 5 Minuten
      var optin = getState(idOptin).val;
      var parseString = require('xml2js').parseString;
      var request = require('request');
      if (optin) request(link, function (error, response, body) {
      if (!error && response.statusCode == 200) {
      // Unerlaubte Bindestriche ind en XML Element Namen ersetzen
      body = body.replace(/vbb-name/g, "vbb_name");
      body = body.replace(/hafas-nr/g, "hafas_nr");
      body = body.replace(/aufzugs-id/g, "aufzugs_id");
      parseString(body, {
      explicitArray: false,
      mergeAttrs: true
      }, function (err, result) {
      //log(JSON.stringify(result, null, 2)); // für debug Zwecke
      var tabelle = '<table id="brokenlifts"><caption>Broken Lifts</caption><tbody>'; // Grundgerüst Tabelle, Caption kann ausgeblendet werden
      if (err) {
      log("Fehler: " + err);
      tabelle += '<tr><td>Fehler beim Einlesen</td></tr>'; // neue Zeile und Fehlermeldung in Tabelle
      } else {
      tabelle += '<thead><tr><td>Station</td><td>Status</td><td>Aktuelle Meldung</td></tr></thead>'; // neue Titel-Zeile mit drei Datenfeldern (diese werden in VIS formatiert)
      for (var i = 0; i < result.rss.channel.item.length; i++) {
      tabelle += '<tr><td>' + result.rss.channel.item[i].vbb_name + '</td><td>' + result.rss.channel.item[i].title + '</td><td>' + result.rss.channel.item[i].description + '</td>'; // neue Tabellen-Zeile pro i
      }
      }
      tabelle += '</tbody></table>'; // HTML-Tabelle schließen (mit und ohne Fehler, aber Tabellen Gerüst steht)
      setState(idFeedTabelle, tabelle);
      });
      } else {
      log(error);
      }
      }); // Ende request
      log('RSS-Feed ' + link + ' eingelesen');
      }
      schedule("*/10 * * * *", RSS_einlesen);
      RSS_einlesen();
      // Opt In setzen - Logging
      on({
      id: idOptin,
      change: 'ne'
      }, function (obj) {
      if (obj.newState.val === false || obj.newState.val == 'false') {
      log('Opt in Variable <' + optin_beschreibung + ' Push> auf <aus ' + obj.newstate.val + ' >gesetzt ', 'info');
      } else if (obj.newState.val === true || obj.newState.val == 'true') {
      log('Opt in Variable <' + optin_beschreibung + ' Push> auf <ein ' + obj.newstate.val + ' >gesetzt ', 'info');
      }
      });

      1. weiterhin habe ich sein Widget einfach kopiert, aber den Pfad auf meinen (siehe unterhalb) angepasst:

      Objekte:
      Anmerkung 2019-12-29 203025.png

      Widget im View:
      Anmerkung 2019-12-29 203410.png

      1. den Javascript Adapter habe ich um "request" + "xml2js" ergänzt und den Adapter neu gestartet

      Erhalte bereits im Script folgende Warnung:


      20:25:53.036 info javascript.0 (16616) Start javascript script.js.common.RSS-Feed
      %(#c91616)[20:25:53.101 warn javascript.0 (16616) at RSS_einlesen (script.js.common.RSS-Feed:32:16)
      20:25:53.102 warn javascript.0 (16616) at script.js.common.RSS-Feed:66:1]
      20:25:53.103 info javascript.0 (16616) script.js.common.RSS-Feed: RSS-Feed https://www.computerbase.de/rss/news.xml eingelesen
      20:25:53.104 info javascript.0 (16616) script.js.common.RSS-Feed: registered 6 subscriptions and 1 schedule
      20:30:00.021 warn javascript.0 (16616) at Object.RSS_einlesen (script.js.common.RSS-Feed:32:16)
      20:30:00.026 info javascript.0 (16616) script.js.common.RSS-Feed: RSS-Feed https://www.computerbase.de/rss/news.xml eingelesen

      S P 2 Replies Last reply
      0
      • BostilB Bostil

        Danke dir @senger1985 erstmal. Ich vermute, ich übersehe bloß eine "Kleinigkeit". Ich werde mal konkreter:

        1. Das ist nun mein Script (zu 100% das von @pix, bloß den RSS-Feed mal angepasst) und unter common > RSS-Feed abgespeichert und gestartet


        /* VIS VBB Tabelle
        {1}
        Bringt einen RSS-Feed als Tabelle in ioBroker
        setzt die Library xml2js voraus (in Javascript Einstellungen zufügen)
        {1}
        für http://forum.iobroker.net/viewtopic.php?f=21&t=1683
        {1}
        08.11.2015 erstellt von Pix (auf Basis von Bluefox Code) für Griesemer
        29.10.2019 angepasst von Pix (XML Element Namen mit Bindstrich (Hyphen) werden nkicht ausgelesen "vbb-name")
        {1}
        */
        createState('RSS-Feed.VBB.Tabelle', "", {
        write: true,
        read: true,
        name: 'RSS-Feed VBB Tabelle',
        type: 'string',
        desc: 'VBB RSS Feed als HTML Tabelle'
        });
        createState('RSS-Feed.VBB.Optin', true, {
        write: true,
        read: true,
        name: 'Optin RSS Feeds abrufen',
        type: 'boolean',
        desc: 'Sollen RSS-Feeds abgerufen werden?'
        });
        var link = 'https://www.computerbase.de/rss/news.xml';
        var idOptin = 'RSS-Feed.Optin',
        optin_beschreibung = 'RSS Feed',
        idFeedTabelle = 'RSS-Feed.VBB.Tabelle';

        function RSS_einlesen() { // alle 5 Minuten
        var optin = getState(idOptin).val;
        var parseString = require('xml2js').parseString;
        var request = require('request');
        if (optin) request(link, function (error, response, body) {
        if (!error && response.statusCode == 200) {
        // Unerlaubte Bindestriche ind en XML Element Namen ersetzen
        body = body.replace(/vbb-name/g, "vbb_name");
        body = body.replace(/hafas-nr/g, "hafas_nr");
        body = body.replace(/aufzugs-id/g, "aufzugs_id");
        parseString(body, {
        explicitArray: false,
        mergeAttrs: true
        }, function (err, result) {
        //log(JSON.stringify(result, null, 2)); // für debug Zwecke
        var tabelle = '<table id="brokenlifts"><caption>Broken Lifts</caption><tbody>'; // Grundgerüst Tabelle, Caption kann ausgeblendet werden
        if (err) {
        log("Fehler: " + err);
        tabelle += '<tr><td>Fehler beim Einlesen</td></tr>'; // neue Zeile und Fehlermeldung in Tabelle
        } else {
        tabelle += '<thead><tr><td>Station</td><td>Status</td><td>Aktuelle Meldung</td></tr></thead>'; // neue Titel-Zeile mit drei Datenfeldern (diese werden in VIS formatiert)
        for (var i = 0; i < result.rss.channel.item.length; i++) {
        tabelle += '<tr><td>' + result.rss.channel.item[i].vbb_name + '</td><td>' + result.rss.channel.item[i].title + '</td><td>' + result.rss.channel.item[i].description + '</td>'; // neue Tabellen-Zeile pro i
        }
        }
        tabelle += '</tbody></table>'; // HTML-Tabelle schließen (mit und ohne Fehler, aber Tabellen Gerüst steht)
        setState(idFeedTabelle, tabelle);
        });
        } else {
        log(error);
        }
        }); // Ende request
        log('RSS-Feed ' + link + ' eingelesen');
        }
        schedule("*/10 * * * *", RSS_einlesen);
        RSS_einlesen();
        // Opt In setzen - Logging
        on({
        id: idOptin,
        change: 'ne'
        }, function (obj) {
        if (obj.newState.val === false || obj.newState.val == 'false') {
        log('Opt in Variable <' + optin_beschreibung + ' Push> auf <aus ' + obj.newstate.val + ' >gesetzt ', 'info');
        } else if (obj.newState.val === true || obj.newState.val == 'true') {
        log('Opt in Variable <' + optin_beschreibung + ' Push> auf <ein ' + obj.newstate.val + ' >gesetzt ', 'info');
        }
        });

        1. weiterhin habe ich sein Widget einfach kopiert, aber den Pfad auf meinen (siehe unterhalb) angepasst:

        Objekte:
        Anmerkung 2019-12-29 203025.png

        Widget im View:
        Anmerkung 2019-12-29 203410.png

        1. den Javascript Adapter habe ich um "request" + "xml2js" ergänzt und den Adapter neu gestartet

        Erhalte bereits im Script folgende Warnung:


        20:25:53.036 info javascript.0 (16616) Start javascript script.js.common.RSS-Feed
        %(#c91616)[20:25:53.101 warn javascript.0 (16616) at RSS_einlesen (script.js.common.RSS-Feed:32:16)
        20:25:53.102 warn javascript.0 (16616) at script.js.common.RSS-Feed:66:1]
        20:25:53.103 info javascript.0 (16616) script.js.common.RSS-Feed: RSS-Feed https://www.computerbase.de/rss/news.xml eingelesen
        20:25:53.104 info javascript.0 (16616) script.js.common.RSS-Feed: registered 6 subscriptions and 1 schedule
        20:30:00.021 warn javascript.0 (16616) at Object.RSS_einlesen (script.js.common.RSS-Feed:32:16)
        20:30:00.026 info javascript.0 (16616) script.js.common.RSS-Feed: RSS-Feed https://www.computerbase.de/rss/news.xml eingelesen

        S Offline
        S Offline
        senger1985
        wrote on last edited by
        #43

        @Bostil habe gerade selbst etwas getestet und umgeschrieben, aber leider auch keine Lösung gefunden.

        1 Reply Last reply
        1
        • BostilB Bostil

          Danke dir @senger1985 erstmal. Ich vermute, ich übersehe bloß eine "Kleinigkeit". Ich werde mal konkreter:

          1. Das ist nun mein Script (zu 100% das von @pix, bloß den RSS-Feed mal angepasst) und unter common > RSS-Feed abgespeichert und gestartet


          /* VIS VBB Tabelle
          {1}
          Bringt einen RSS-Feed als Tabelle in ioBroker
          setzt die Library xml2js voraus (in Javascript Einstellungen zufügen)
          {1}
          für http://forum.iobroker.net/viewtopic.php?f=21&t=1683
          {1}
          08.11.2015 erstellt von Pix (auf Basis von Bluefox Code) für Griesemer
          29.10.2019 angepasst von Pix (XML Element Namen mit Bindstrich (Hyphen) werden nkicht ausgelesen "vbb-name")
          {1}
          */
          createState('RSS-Feed.VBB.Tabelle', "", {
          write: true,
          read: true,
          name: 'RSS-Feed VBB Tabelle',
          type: 'string',
          desc: 'VBB RSS Feed als HTML Tabelle'
          });
          createState('RSS-Feed.VBB.Optin', true, {
          write: true,
          read: true,
          name: 'Optin RSS Feeds abrufen',
          type: 'boolean',
          desc: 'Sollen RSS-Feeds abgerufen werden?'
          });
          var link = 'https://www.computerbase.de/rss/news.xml';
          var idOptin = 'RSS-Feed.Optin',
          optin_beschreibung = 'RSS Feed',
          idFeedTabelle = 'RSS-Feed.VBB.Tabelle';

          function RSS_einlesen() { // alle 5 Minuten
          var optin = getState(idOptin).val;
          var parseString = require('xml2js').parseString;
          var request = require('request');
          if (optin) request(link, function (error, response, body) {
          if (!error && response.statusCode == 200) {
          // Unerlaubte Bindestriche ind en XML Element Namen ersetzen
          body = body.replace(/vbb-name/g, "vbb_name");
          body = body.replace(/hafas-nr/g, "hafas_nr");
          body = body.replace(/aufzugs-id/g, "aufzugs_id");
          parseString(body, {
          explicitArray: false,
          mergeAttrs: true
          }, function (err, result) {
          //log(JSON.stringify(result, null, 2)); // für debug Zwecke
          var tabelle = '<table id="brokenlifts"><caption>Broken Lifts</caption><tbody>'; // Grundgerüst Tabelle, Caption kann ausgeblendet werden
          if (err) {
          log("Fehler: " + err);
          tabelle += '<tr><td>Fehler beim Einlesen</td></tr>'; // neue Zeile und Fehlermeldung in Tabelle
          } else {
          tabelle += '<thead><tr><td>Station</td><td>Status</td><td>Aktuelle Meldung</td></tr></thead>'; // neue Titel-Zeile mit drei Datenfeldern (diese werden in VIS formatiert)
          for (var i = 0; i < result.rss.channel.item.length; i++) {
          tabelle += '<tr><td>' + result.rss.channel.item[i].vbb_name + '</td><td>' + result.rss.channel.item[i].title + '</td><td>' + result.rss.channel.item[i].description + '</td>'; // neue Tabellen-Zeile pro i
          }
          }
          tabelle += '</tbody></table>'; // HTML-Tabelle schließen (mit und ohne Fehler, aber Tabellen Gerüst steht)
          setState(idFeedTabelle, tabelle);
          });
          } else {
          log(error);
          }
          }); // Ende request
          log('RSS-Feed ' + link + ' eingelesen');
          }
          schedule("*/10 * * * *", RSS_einlesen);
          RSS_einlesen();
          // Opt In setzen - Logging
          on({
          id: idOptin,
          change: 'ne'
          }, function (obj) {
          if (obj.newState.val === false || obj.newState.val == 'false') {
          log('Opt in Variable <' + optin_beschreibung + ' Push> auf <aus ' + obj.newstate.val + ' >gesetzt ', 'info');
          } else if (obj.newState.val === true || obj.newState.val == 'true') {
          log('Opt in Variable <' + optin_beschreibung + ' Push> auf <ein ' + obj.newstate.val + ' >gesetzt ', 'info');
          }
          });

          1. weiterhin habe ich sein Widget einfach kopiert, aber den Pfad auf meinen (siehe unterhalb) angepasst:

          Objekte:
          Anmerkung 2019-12-29 203025.png

          Widget im View:
          Anmerkung 2019-12-29 203410.png

          1. den Javascript Adapter habe ich um "request" + "xml2js" ergänzt und den Adapter neu gestartet

          Erhalte bereits im Script folgende Warnung:


          20:25:53.036 info javascript.0 (16616) Start javascript script.js.common.RSS-Feed
          %(#c91616)[20:25:53.101 warn javascript.0 (16616) at RSS_einlesen (script.js.common.RSS-Feed:32:16)
          20:25:53.102 warn javascript.0 (16616) at script.js.common.RSS-Feed:66:1]
          20:25:53.103 info javascript.0 (16616) script.js.common.RSS-Feed: RSS-Feed https://www.computerbase.de/rss/news.xml eingelesen
          20:25:53.104 info javascript.0 (16616) script.js.common.RSS-Feed: registered 6 subscriptions and 1 schedule
          20:30:00.021 warn javascript.0 (16616) at Object.RSS_einlesen (script.js.common.RSS-Feed:32:16)
          20:30:00.026 info javascript.0 (16616) script.js.common.RSS-Feed: RSS-Feed https://www.computerbase.de/rss/news.xml eingelesen

          P Offline
          P Offline
          pix
          wrote on last edited by
          #44

          @Bostil Frohes Neues! Du hast immer noch die VBB spezifischen Abfragen im Skript. Das Skript fragt die computerbase-Seite ab und versucht dann die gesperrten Rolltreppen zu finden. Kann ja nicht gehen.

          Schau mal hier, ob du einen besseren Ansatz findest:

          Altes RSS Parser Skript

          Gruß
          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          S 1 Reply Last reply
          1
          • BostilB Offline
            BostilB Offline
            Bostil
            wrote on last edited by
            #45

            Hallo @pix vielen Dank für deine Hilfe.

            Habe jetzt mal deinen Beitrag vom 05.11.2015 hier rausgekramt und erstmal alles (Script, CSS, Widget) eins zu eins übernommen, leider schlägt es noch fehl. Hast du noch im Kopf, welche Dinge im Script noch korrigiert werden mussten aufgrund zwischenzeitlichen Anpassungen ?

            Dankeschön.

            1 Reply Last reply
            0
            • I Offline
              I Offline
              IOT
              wrote on last edited by IOT
              #46

              Hallo RRS Community
              spiele gerade mit dem Scripts um die aktuellen Verkehrsmeldungen aus meiner Gegen anzuzeigen. Im original "https://www.vbb.de/broken_lifts.xml" läufts super aber wenn ich es mit "https://www.oeamtc.at/feeds/verkehr/a9.xml" versuche bekomme ich keine Daten in die Tabelle. Hatte wer von euch das gleiche Problem? DANKE

              1 Reply Last reply
              1
              • I Offline
                I Offline
                IOT
                wrote on last edited by
                #47

                Gefunden und gelöst. Wenn da nur ein item zurückkommt wird kein Array instanziert. Dann einfach ohne Index benutzen und schon gehts.

                1 Reply Last reply
                0
                • P pix

                  @Bostil Frohes Neues! Du hast immer noch die VBB spezifischen Abfragen im Skript. Das Skript fragt die computerbase-Seite ab und versucht dann die gesperrten Rolltreppen zu finden. Kann ja nicht gehen.

                  Schau mal hier, ob du einen besseren Ansatz findest:

                  Altes RSS Parser Skript

                  Gruß
                  Pix

                  S Offline
                  S Offline
                  senger1985
                  wrote on last edited by
                  #48

                  Hallo @pix

                  du hast mir ja 2019 super, bei meinem Script, für die BVG/VBB-Aufzugsstörungen geholfen und das Script lief auch jahrelang super.

                  Nur haben die Betreiber jetzt die XML-Datei umgeschrieben und einfach eine "Wall-of-Text" hinterlegt.

                  Kann man daraus auch, irgendwie an die Daten, zum parsen kommen?

                  Hier nochmal die Seite: http://brokenlifts.org/rss

                  Danke und frohe Ostern

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  569

                  Online

                  32.5k

                  Users

                  81.7k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe