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. RSS Parser

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

RSS Parser

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
48 Beiträge 11 Kommentatoren 11.8k Aufrufe 7 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.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #36

    Ich schieße gleich mal nach:
    Der Link hat sich nur geändert: https://www.vbb.de/broken_lifts.xml

    Ich checke gerade das Skript ....

    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 Antwort Letzte Antwort
    0
    • P pix

      Ich schieße gleich mal nach:
      Der Link hat sich nur geändert: https://www.vbb.de/broken_lifts.xml

      Ich checke gerade das Skript ....

      S Offline
      S Offline
      senger1985
      schrieb am zuletzt editiert von
      #37

      @pix danke dir.

      Bin aber jetzt erstmal bis heute Abend unterwegs.

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von pix
        #38

        So, habe mal das Skript etwas angepasst:

        /* VIS VBB Tabelle
        
        Bringt einen RSS-Feed als Tabelle in ioBroker
        setzt die Library xml2js voraus (in Javascript Einstellungen zufügen)
        
        für http://forum.iobroker.net/viewtopic.php?f=21&t=1683
        
        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")
        
        */
        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.vbb.de/broken_lifts.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');
           }
        });
        


        Es gab noch ein Problem, ich musst edie unerlaubte XML Element Namen ersetzen. Einige hatten einen Bindestrich, dann streikt der Parser.

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

        Bildschirmfoto 2019-10-29 um 10.34.50.jpg

        [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{javascript.2.RSS-Feed.VBB.Tabelle}"},"style":{"left":"156px","top":"326px","z-index":"20","background-color":"blue","width":"628px","height":"auto"},"widgetSet":"basic"}]
        

        Bildschirmfoto 2019-10-29 um 10.33.51.jpg

        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

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          senger1985
          schrieb am zuletzt editiert von
          #39

          @pix du bist einfach super.

          Vielen, vielen Dankt und ich habe mich dumm und dämlich gesucht, woran es gelegen hat.

          1 Antwort Letzte Antwort
          1
          • BostilB Offline
            BostilB Offline
            Bostil
            schrieb am zuletzt editiert von
            #40

            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 1 Antwort Letzte Antwort
            0
            • 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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              1
              • BostilB Offline
                BostilB Offline
                Bostil
                schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #43

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

                  1 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    1
                    • BostilB Offline
                      BostilB Offline
                      Bostil
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • I Offline
                        I Offline
                        IOT
                        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                        1
                        • I Offline
                          I Offline
                          IOT
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 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

                            862

                            Online

                            32.4k

                            Benutzer

                            81.5k

                            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