NEWS
RSS Parser
-
Hallo Pix,
ist echt verrückt wie einen iobroker in seinen Bann ziehen kann :shock: .
Werde mir deine Lösung auf jeden Fall mal genauer anschauen.
Bin gerade im Lernmodus.
Gruß
Holger
1518_pv.txt -
@pix:Habt Ihr auch noch Ideen? `
Vielleicht wäre das ein Thema für einen flexibel konfigurierbaren RSS-Adapter. Ich könnte dazu allerdings nicht viel beitragenBeste Grüße
Griesemer
-
Hallo,
ein flexibel konfigurierbarer Adapter ist vermutlich deshalb ein Problem, weil die RSS-Quellen natürlich sehr unterschiedlich sind und vor allem die Ausgabe von jedem User unterschiedlich gewünscht wird. Dafür ist ein individuelles CSS nötig.
Aber vielleicht gibt es noch RSS-Feeds die nützlich, aber unbekannt/versteckt im Netz sind.
Und hat jemand eine Idee, wie ich von ioBroker Javascript einen Kalendereintrag erzeugen kann?
Gruß,
Pix
-
Vielleicht wäre das ein Thema für einen flexibel konfigurierbaren RSS-Adapter. Ich könnte dazu allerdings nicht viel beitragen `
Das war auch mein Gedanke.Deswegen habe ich mal meinen ersten Adapter gestartet.
iobroker.rss
Hab da ein paar Ideen.
Mal schauen wie ich damit zurecht komme.
Zumindest wird das Grundgerüst schon mal in der Testumgebung angezeigt.
Ich werde den Adapter dann unter GIT stellen.
Ist aber alles Neuland.
Gruß
Holger
-
Bin leider noch nicht weiter gekommen, aber ich hätte noch einen RSS
-
Hallo,
es gibt derzeit ein Problem mit dem Dienst http://spotthestation.nasa.gov
Daher funktioniert das o.g. Skript zur Zeit nicht und führt zum Absturz der entsprechenden Javascript Instanz. Das zeigt anschaulich, weshalb man Skripte, die auf fremden Daten basieren, nur in einer separaten Javscript-Instanz nutzen sollte.
Wer es nutzt, sollte das Skript vorerst deaktivieren.
Gruß
Pix
-
Hallo,
habe das http://forum.iobroker.net/viewtopic.php?f=21&t=1683#p14391 angepasst. Es gab einige Fehler/Mängel:
-
Link ist jetzt eine XML von spotthestation via https
-
Die Seite liefert nicht nur Daten zur ISS, sondern auch zu anderen Stationen (zB "https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwj_npb_qPrLAhXMjSwKHZ4oDoQQFggfMAA&url=http%3A%2F%2Fwww.nasa.gov%2Fcontent%2Fprogress-61p-cargo-craft&usg=AFQjCNEZ4_5593os7mPd_KPQAWEV7Sk-MQ"). Der Titel der Station wird nun mit ausgegeben (View und Pushmeldung)
-
Code optimiert und korrigiert
Gruß,
Pix
EDIT: 22.1.2018 Link zum Skript aktualisiert
-
-
Hallo,
hab das http://forum.iobroker.net/viewtopic.php?f=21&t=1683#p14391 nochmal verbessert:
-
Benachrichtigung, ob Überflug, nun einmalig 0-30min vor Ereignis
-
Besserer Umgang mit Fehlern, falls XML keinen Überflug meldet
Gruß
Pix
EDIT: 22.1.2018 Link zum Skript aktualisiert
-
-
Hallo,
ich habe mir über die tolle Anleitung von pix erfolgreich den tagesschau-feed auf meine vis-oberfläche geholt. Ich möchte jedoch die Darstellung für meine Zwecke ein wenig anpassen. Im Moment werden alle Nachrichten untereinander (Schlagzeile und Nachricht abwechselnd) geschrieben. Das ist von der Aufteilung her gut so, nur hab ich leider nicht unbegrenzt Platz zur Verfügung. Ich möchte lieber anstatt allen Nachrichten gleichzeitig nur jeweils eine aus der Liste anzeigen lassen. Die Nachrichten sollen dann im 30 sek Rhythmus durchwechseln.
Wie schaffe ich es also, aus der html-Tabelle im Datenpunkt auf die einzelnen Einträge zuzugreifen, und mir diese im Wechsel anzeigen zu lassen?
Vielen Dank für jede Hilfe!
Beste Grüße!
-
Servus Zusammen,
genau das was nathan1312 gemacht hat, suche ich gerade.
Bzw. genial wäre das durchwechseln der Nachrichten
Entweder n-tv, N24 oder tagesschau Feed´s:
n-tv: https://www.n-tv.de/rss
N24: https://www.welt.de/feeds/topnews.rss
Tagesschau: http://www.tagesschau.de/download/xml/rss2
Bräuchte das für meine MagicMirror auf dem eine iob.vis läuft ;o)
Gruß Peer
-
Hallo,
hier kannst du ein Skript, das setInterval nutzt, finden. Damit lasse ich mir alle 10s eine andere Webcam/Regenradar/etc. anzeigen.
http://forum.iobroker.net/viewtopic.php … 981#p17070
Gruß
Pix
-
Hallo,
ich habe nach der Anleitung von pix, das Script in eine zweite JS-Instanz eingepflegt und für meinen RSS-Feed, den ich auslesen lassen möchte umgeschrieben.
Nur leider bekomme ich in der ersten Spalte "NaN…" angezeigt.
Hier das Script:
/* VIS TV Programm 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 erstellt: 08.11.2015 von Pix (auf Basis von Bluefox Code) für Griesemer */ 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.Optin', true, {write: true, read: true, name: 'Optin RSS Feeds abrufen', type: 'boolean', desc: 'Sollen RSS-Feeds abgerufen werden?'}); var link = 'http://www.vbb.de/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) { parseString(body, { explicitArray: false, mergeAttrs: true }, function (err, result) { //log(JSON.stringify(result, null, 2)); if (err) { log("Fehler: " + err); } else { var tabelle =''; for(var i = 0; i <result.rss.channel.item.length; i++)/{/tabelle/+="<tr><td>" result.rss.channel.item[i].vbb-name/'</td=""></result.rss.channel.item.length;>'; } tabelle += ' | Station | Status | Aktuelle Meldung | | --- | --- | --- | | ' + result.rss.channel.item[i].title + ' | ' + result.rss.channel.item[i].description + ' | '; 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'); } });
Kann mir da vielleicht jemand sagen, warum "result.rss.channel.item_
[i].vbb-name" dieses Resultat ausgibt?Vielen Dank
-
Hallo @ *,
bohre gerade meine LED Matrix Anzeige auf 2x (8x128) auf und würde gern in der unteren Zeile einen Newsfeed laufen lassen. Habe das Script auf einem separaten JS-Adapter installiert, finde jetzt aber die Daten nicht. Wo schreibt der das hin?????? Oder mache ich da einen Denkfehler?
Danke und Grüße
Lars
Bin ich blöd! Habs gefunden
Ich versuche es mal umzuschreiben dass jeweils die 5 aktuellsten Headlines in eine Variable geschrieben werden - das Matrix Display gibt nur eine Zeichenkette aus …
-
Wo finde ich jetzt den aktuellen Skript ?
-
@pix
Wie und wo hast du das denn alles eingebunden!? Das sieht echt toll aus! Ich bin noch iobroker neuling und könnte eine wenig Griff unter die Flügel gebrauchen.
Gruß Gordon -
@Aphofis Such mal nach "Mal zeigen will" oder so, da sind viele VIS Views vorgestellt.
Gruß
Pix -
@pix OK Danke
-
@pix könntest du mal bitte über mein Script (Post 27) schauen und mir sagen, warum er mir die Daten nicht ausgibt?
-
Hallo Senger1985,
das o.g. Skript ist ganz schön zerhauen (durch die Änderung der Forensoftware). Du müsstest eigentlich das Originalskript aus deiner Installation neu posten.
Kannst du dir aber sparen, denn es liegt nicht am Skript.
Der Link zur XML-Datei funktioniert nicht mehr bzw. die Information wird nicht mehr darin bereitgestellt:
Gruß
Pix -
@pix danke, für eine Antwort.
Wenn ich Link Text aufrufe, bekomme ich aber noch die Daten angezeigt.
/* VIS VBB Newsfeed {1} Bringt einen RSS-Feed als Tabelle in ioBroker setzt die Library xml2js voraus (in Javascript Einstellungen zufügen) {1} {1} erstellt: 11.05.2017 von Torsten (auf Basis von Bluefox Code und Pix) */ 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.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 vbb = 'vbb-name'; 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) { parseString(body, { explicitArray: false, mergeAttrs: true }, function (err, result) { //log(JSON.stringify(result, null, 2)); if (err) { log("Fehler: " + err); } else { /* // Titel links, Inhalt rechts var tabelle ='<table class="rss_feed"><thead><tr><th>Titel</th><th>Beschreibung</th></tr></thead><tbody>'; for(var i = 0; i <result.rss.channel.item.length; i++) { tabelle += '<tr><td>' + result.rss.channel.item[i].title + '</td>'</br>'<td>' + result.rss.channel.item[i].description + '</td></tr>'; } */ // Titel oben, INhalt darunter (wie in der Zeitung) var tabelle ='<table class="rss_feed"><thead><tr><th>BVG Aufzugsstörung</p></th></tr></thead><tbody>'; for(var i = 0; i <result.rss.channel.item.length; i++) { tabelle += '<tr><td>' + result.rss.channel.item[i].title + '</td></tr><tr><td>' + result.rss.channel.item[i].description + '</td></tr><tr><td>' + result.rss.channel.item[i].vbb/-name + '</td></tr>'; } tabelle += '</tbody></table>'; 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'); } });