NEWS
Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed
-
sorry für die blöde Frage, aber wie bekomme ich die Gesamtanzahl der Inhalte eines Feeds heraus?
-
@oli
das kommt darauf an.
Die Menge der Artikel werden durch gewisse Faktoren limitiert.- Max Articles in der Adapterkonfiguration (standardmäßig 100)
- das Attribut rss_maxarticles in den jeweiligen widget
alles das was dann noch übrigbleibt wird dann an das Ausgabe-Template in das Array articles übergeben.
Nutzt du ein eigenes template zur Ausgabe der rss-Artikel?
Das widget funktioniert ja intern mit einem ejs-Template (ist in der widget hilfe angegeben)
Wenn du da die Gesamtmenge ausgeben willst habe ich dir das Template in zeile 2 ohne großen schnickschnack wie Formatierung hinzugefügt (articles.length)<%= meta.title %> <%= articles.length %> <% articles.forEach(function(item){ %> <p><small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small></p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;" /> <% }); %>
-
danke für deine schnelle Antwort.
Ich benutze den RSS Feed der Produktwarnungen und möchte mir die Gesamtanzahl der Produktwarnungen gerne in meiner VIS anzeigen lassen, daher die Frage.Sorry hätte ich oben gleich mit dazu schreiben sollen.
Jetzt habe ich allerdings noch eine Frage.
ich habe gerade deine coole Slideshow entdeckt und natürlich gleich mal getestet, funktioniert super!!!!
Aber wie bekomme ich die lästige Überschrift "Lebensmittelwarnung.de- Warnungen in Bayern" weg?
Wenn ich das Script der Slidshow entferne, erscheint die Überschrift nicht
Mit Slideshow:
<script> // Konfigurationsbereich Anfang var fadeTime = 1000; //Zeit in Millisekunden zum Ein und Ausblenden eines Artikels var showTime = 4000; //Zeitdauer, wie lange ein Artikel angezeigt werden soll // Konfigurationsbereich Ende </script> <style> #{wname} .slideshow { position: relative; } #{wname} .slideshow > div { position: absolute; display: none; } #{wname} .slideshow > div:nth-child(0n+1) { display: block; } </style> <script> setInterval(function() { $('#{wname} .slideshow > div:first') .fadeOut(fadeTime) .next() .fadeIn(fadeTime) .end() .appendTo('#{wname} .slideshow'); }, showTime); </script> <%= meta.title %> <div class="slideshow"> <% articles.forEach(function(item){ %> <div> <p><item.pubdate style="color:Orange">Veröffentlichungsdatum: <%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm")%> Uhr</p> <h3><item.title style="color:Lightgreen"><%- item.title %></h3> <p><small><%- item.description %></small></p> <div style="clear:both;" /> </div> <% }); %> </div>
Ohne Slideshow:
<% articles.forEach(function(item){ %> <p><item.pubdate style="color:Orange">Veröffentlichungsdatum: <%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm")%> Uhr</p> <h3><item.title style="color:Lightgreen"><%- item.title %></h3> <p><small><%- item.description %></small></p> <div style="clear:both;" ></div> <% }); %>
Wo habe ich den Fehler?
-
Das ist die Zeile 30
<%= meta.title %>An das widget-Template werden 2 Variablen übergeben
meta enthält alle Attribute zum rssfeed
articles ist eine Auflistung aller Artikel als array.
um die technischen Details zu sehen gibt es die beiden Hilfswidgets
RSS Feed meta helper
RSS Feed Article helper
da nicht alles Feeds die selben Attribute beinhalten.
Mit Hilfe dieser Informationen kann man sich seine individuelle Darstellung bauen.Nicht zu vergessen mein leider etwas verkannte widget JSON Helper, mit dem man das für jegliche Datenpunkte und JSON-Daten machen kann und sich so sein eigenes widget bauen kann (ok ein kleiner Nachteil gibt es, der nur bei großen Datenmengen oder häufigen Änderungen der Datenpunkte ins gewicht fällt.steht in der Beschreibung)
Das ist mit der gleichen Technik erstellt worden -
Hallo Oliver,
seit Tagen hatte ich ein/zweimal täglich einen Neustart vom IOBroker. ( Speichermangel )
Nach vielen Tests, muss ich leider sagen, dass nach Abschalten des RSS Adapters das Problem erledigt ist.War da nicht mal was mit Deinem Adapter und Speicherproblemen ?
FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
-
@skokarl
ja da war was. Allerdings war es das letzte mal wohl der Browser/Visualisierung, die "abgestürzt" ist.
ich konnte es aber nicht nachstellen.
Ich habe den Adapter mit 4 rssfeeds mehrere Tage laufen lassen, ohne das es hier ein Problem gab.
Wenn ich das nächste mal den Adapter umarbeite (es stehen ja ein paar Dinge noch an),
kann ich speziell mal noch nach den Speicherlecks sehen und extra Vorsichtsmaßnahmen ergreifen.
Allerdings verwende ich selbst diverse Bibliotheken, für die ich das nicht machen kann.
Wenn du spezielle Informationen hast, anhand dessen ich das Szenario nachstellen kann, dann erhöht es die Chance das Problem auch zu identifizieren.Bei dir ist der Adapter abgestürzt oder der Browser/die Visualisierung?
Da der Adapter viele Daten abruft und diese auch im Speicher behält, kann das abschalten des Adapters auch nur eine weile hinaus schieben, da ja evtl. das eigentliche Problem dann mehr Zeit und Speicherplatz frei hat um es vollzuschreiben.
Hast du den ein Monitoring laufen, anhand man die Speicherplatzentwicklung des Adapters/Prozesses genau verfolgen kann? Es müsste da sogar ein eigenen Datenpunkt geben.
-
Also, der Adapter läuft bei mir seit dem ersten Tag der "Erstellung", ich bin auch super zufrieden.
IOBroker läuft als VM unter Proxmox, aufgefallen ist es eigentlich zum ersten Mal als ich einen Feed hinzugefügt habe.
( vor einigen Wochen )Natürlich gabs dazu jede Menge Updates aus dem Latest vom IOBroker.
Als Tablet habe ich neuerdings den Echo 15 mit Silk Browser ( ob's daran liegt ??? )
In Promox sehe ich, dass der Speicher gelegentlich sehr hoch ging.
Interessant finde ich aber das.....wenn ich die Fehlermeldung bei Google eingebe.
wegen Absturz ..... der IOBroker startet automatisch komplett neu
-
@skokarl
du kannst ja mal die folgenden datenpunkte über den history adapter tracken und in einem Diagramm anzeigen lassensystem.adapter.rssfeed.0.memHeapTotal
system.adapter.rssfeed.0.memHeapUsed
system.adapter.rssfeed.0.memRssDas sind die Datenpunkte, die iobroker für jeden einzelnen Adapter anlegt.
Daran kannst du sehen ob rssfeed selbst vor Absturz immer mehr Speicher zieht.
bzw. im Vergleich zu allen anderen Adaptern, wer der schuldige ist.
Damit es mit allen Adaptern nicht zuviel wird müsste der memHeapTotal ausreichen.
Da kann evtl. noch jemand anders dazu etwas sagen.und im speziellen auf jeden Fall den javascript-Adapter monitoren. Da steckt das meiste Potential an Speicherlecks drin.
Auch kannst du im Log zeitlich vor dem Absturz mal schauen welcher Adapter da besonders aktiv war.Die Vorschläge in deiner Suche sind keine praktikablen für uns. Der Standard Heap von node sollte definitiv ausreichend selbst für den iobroker-Hauptprozess selbst sein und muss nicht erweitert werden. Das würde das eigentliche Problem nur weiter verschleiern und die Abstände zwischen den Abstürzen vergrößern.
-
erledigt......gucken wir morgen mal
-
Grüß Dich,
also mein Speicherproblem kommt definitiv vom RSS Adapter.aber....jetzt wollte ich was ändern....max Artikel von 40 auf 10 stellen... aber speichern geht nicht. ( nicht aktiv, Firefox und Chrome )
edit : läuft in einem privilegierten Proxmox Container
-
hab eben den Adapter nochmal komplett gelöscht und neu installiert.
Admin 5.3.2Die Gui funktioniert nicht mehr, man kann nichts mehr speichern.
-
@skokarl
ok ich schau heute abend mal.
habe eigentlich mit dem 5er admin alles getestet.zum speicherproblem: kommt der absturz auf server oder client seite?
ich werde mal dein szenario mal nachstellen.kam den beim aufzeichnen der datenpunkte weiter oben bei dir was raus?
-
@skokarl sagte in Test und Support Adapter rssfeed v1.x.x:
hab eben den Adapter nochmal komplett gelöscht und neu installiert.
Admin 5.3.2Die Gui funktioniert nicht mehr, man kann nichts mehr speichern.
so ich habe auf dem testsystem mal für alles relevante ein update gemacht
iobroker 4.0.21
Admin 5.3.3
Web 4.2.1
rssfeed 1.0.0dann den adapter gelöscht und wieder hinzugefügt.
die adapter-konfigurationsseite rssfeed funktioniert wie vorher in chrome einwandfrei
auf firefox, wie gehabt das scroll-problem
aber ansonsten konnte ich alle rssfeeds neu hinzufügen und abspeichern.das speicherproblem würde ich ja gern nochmal nachvollziehen, leider hast du noch nicht geantwortet, ob der adapter selber abstürzt oder ob der browser so etwas anzeigt. auch wolltest du mal noch die ram-relevanten datenpunkte des adapter mal aufzeichnen (siehe weiter oben)
-
Hallo Oliver,
ja, wenn immer alles so einfach wäre.
Erstmal kurz zur GUI, versuch mal die die "max Artikel" Einstellung zu ändern und abzuspeichern.
Ich nutze nur Firefox, kriegs aber gerade mit Chrome auch nicht hin.
Allerdings bestehe ich auch auf Firefox weil sonst wirklich alles im Browser funktioniert, und wg einem Adapter ggf auf Chrome zu gehen sehe ich nicht wirklich ein.Ansonsten bringt hier viel Schreiben wenig, da müssen wir mal Anydesk bemühen.
Zum Speicherproblem,...also, wie Du sicherlich mitbekommen hast hatte ich hier wochenlang riesen Theater mit Abstürzen. Ich war kurz davor ne neue NUC zu kaufen, da ich zwischenzeitlich Hardwareprobleme vermutet hatte.
( Speicher, SSD, Controller etc.)Selbst das System habe ich mehrmals komplett neu aufgesetzt, mit Proxmox, mal ein Container, mal eine VM, unterschiedliche Konfiguration usw, alles was man eben machen kann.
Da unser Tablet hier nicht zum Spaß hängt, und meine Frau es auch gerne nutzen möchte ( auch wenn es nur ein "Nice to have" ist), ist es schwierig ständig Experimente zu machen um Fehler zu suchen und zu finden.
Kurzum, aktuell habe ich wieder ein sehr stabiles System, und zwar seit der RSS nicht mehr läuft.
Bis zu diesem Zeitpunkt hatte ich alle Apdater immer mal tageweise abgeschaltet, um auch wirklich sicher zu sein was das Problem sein könnte. Auch die InfluxDB ist irgendwann rausgeflogen und aktuell noch nicht wieder drin, somit waren weitere Speicheraufzeichnungen nicht möglich.
Bis dahin waren die RAM Aufzeichnungen nicht wirklich hillfreich, weil unauffällig.
Aber wie gesagt, ich kann meiner Frau hier nicht tagelang das Radio wegnehmen nur um einen Fehler zu finden.Stand heute,
GUI hat irgendwie Probleme beim Aktivieren des Speicherbuttons ( zur Not machen wir nachher mal kurz ne Anydesk )
System ist stabil seit RSS aus ist.Was hilft Dir noch ?
Also, ich liebe den Adapter, kann ihn aber aktuell nicht nutzen da meine Frau dann wieder auf einige eine nützliche Dinge verzichten müsste.
( mal nach ein paar Stunden, mal nach einem Tag )Seltsam ist, aber vielleicht doch hilfreich, dass die Abstürze mit dem vierten RSS Eintrag begonnen haben, ( so glaube ich mich erinnern zu können ). Ich nutze den Adapter vom ersten Tag an, der hat vorher nie Stress gemacht.
Dazu kommt evtl. die Anzahl der Feeds die sicherlich bedingt durch das aktuelle Geschehen nicht weniger geworden sind.Kannst Du mal testen
https://www.hna.de/kassel/kreis-kassel/rssfeed.xml https://www.n-tv.de/rss https://www.bild.de/rssfeeds/rss3-20745882,feed=alles.bild.html https://www.n-tv.de/politik/rss
Einstellungen dazu im Adpater kann ich Dir nicht mehr genau sagen, auf jeden Fall hatte ich die Anzahl oder die Aktualisierung nie negativ verändert, eher andersherum.
Kurzum, ich helfe Dir jederzeit gerne weiter, ich möchte den RSS ja auch wieder, allerdings habe ich keine Hardware für ein Testsystem, und hier im produktiven Betrieb kann ich nicht alles tagelang protokollieren und mir die Abstürze wieder ins Haus holen.
Am Schluss bleibt noch zu sagen..... DANKE für Deine tollen Adapter und Dein Support.
Bernd
p.s. vielleicht habe ich auch unrecht und es ist ein anderer Adapter der den RSS zum Absturz bringt, dann tut es mir leid, aber das werden wir wohl nie rauskriegen.
Absturz
2022-02-23 06:47:04.396 - info: daswetter.2 (3111) cleaned everything up... 2022-02-23 06:47:04.414 - info: host.iobroker instance system.adapter.daswetter.2 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION) 2022-02-23 06:50:59.125 - error: host.iobroker Caught by controller[0]: <--- Last few GCs ---> 2022-02-23 06:50:59.129 - error: host.iobroker Caught by controller[0]: [1429:0x5ff9740] 52518066 ms: Mark-sweep (reduce) 1933.4 (2083.5) -> 1933.4 (2083.5) MB, 197.7 / 0.0 ms (average mu = 0.150, current mu = 0.000) last resort GC in old space requested 2022-02-23 06:50:59.130 - error: host.iobroker Caught by controller[0]: [1429:0x5ff9740] 52518281 ms: Mark-sweep (reduce) 1933.4 (2055.5) -> 1933.4 (2055.5) MB, 215.2 / 0.0 ms (average mu = 0.074, current mu = 0.000) last resort GC in old space requested 2022-02-23 06:50:59.130 - error: host.iobroker Caught by controller[0]: <--- JS stacktrace ---> 2022-02-23 06:50:59.130 - error: host.iobroker Caught by controller[0]: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 2022-02-23 06:50:59.131 - error: host.iobroker Caught by controller[1]: 1: 0xa389b0 node::Abort() [io.web.0] 2022-02-23 06:50:59.131 - error: host.iobroker Caught by controller[2]: 2: 0x96e0af node::FatalError(char const*, char const*) [io.web.0] 2022-02-23 06:50:59.131 - error: host.iobroker Caught by controller[3]: 3: 0xbb7a4e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [io.web.0] 2022-02-23 06:50:59.132 - error: host.iobroker Caught by controller[4]: 4: 0xbb7dc7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [io.web.0] 2022-02-23 06:50:59.132 - error: host.iobroker Caught by controller[5]: 5: 0xd73fd5 [io.web.0] 2022-02-23 06:50:59.132 - error: host.iobroker Caught by controller[6]: 6: 0xd865f1 v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [io.web.0] 2022-02-23 06:50:59.132 - error: host.iobroker Caught by controller[7]: 7: 0xd4bd2d v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [io.web.0] 2022-02-23 06:50:59.133 - error: host.iobroker Caught by controller[8]: 8: 0xd45bb4 v8::internal::FactoryBase::AllocateRawWithImmortalMap(int, v8::internal::AllocationType, v8::internal::Map, v8::internal::AllocationAlignment) [io.web.0] 2022-02-23 06:50:59.133 - error: host.iobroker Caught by controller[9]: 9: 0xd47f01 v8::internal::FactoryBase::NewRawTwoByteString(int, v8::internal::AllocationType) [io.web.0] 2022-02-23 06:50:59.133 - error: host.iobroker Caught by controller[10]: 10: 0xd4de9c v8::internal::Factory::NewStringFromUtf8(v8::internal::Vector const&, v8::internal::AllocationType) [io.web.0] 2022-02-23 06:50:59.133 - error: host.iobroker Caught by controller[11]: 11: 0xbcec02 v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) [io.web.0] 2022-02-23 06:50:59.134 - error: host.iobroker Caught by controller[11]: 12: 0xb1c319 [io.web.0] 2022-02-23 06:50:59.134 - error: host.iobroker Caught by controller[12]: 13: 0xa14671 [io.web.0] 2022-02-23 06:50:59.134 - error: host.iobroker Caught by controller[13]: 14: 0x13ddced [io.web.0] 2022-02-23 06:50:59.134 - warn: host.iobroker instance system.adapter.web.0 terminated due to SIGABRT 2022-02-23 06:50:59.135 - info: host.iobroker instance system.adapter.web.0 terminated with code NaN () 2022-02-23 06:50:59.135 - info: host.iobroker Restart adapter system.adapter.web.0 because enabled
-
hm, was mach ich mit dir.
also der reihe nach- admin gui nicht mehr bedienbar.
wie gesagt, ich habe das nachvollzogen und bei mir funktioniert es.
leider habe ich aktuell nur in den randzeiten etwas zeit, zu denen du wahrscheinlich kein anydesk mehr machen kannst.
aber nochmal vorab. kannst du beim aufruf der admin gui bitte mal die browserkonsole (F12 chrome,edge und firefox) aufrufen und da schauen, ob da irgendwas nach Fehler im rssfeed aussieht? da werden die fehler, neben warnungen und debughinweisen auch explizit ausgewiesen. - absturz.
also nach log passiert das auf der serverseite. also iobroker. was mich etwas wundert, aber ich kann das log auch nicht so exakt lesen, es ist der web-adapter abgestürzt und nicht rssfeed.
erkennbar in den zeilen steht [io.web.0]
dieser adapter hat zu wenig speicher und hat sich dann beendet. das heißt den müsste man in die untersuchung mit einbeziehen.
mit dieser information würde mich der steigenden speicherverbrauch maL des web-adapters interessieren. aber ein typischer kandidat ist eigentlich immer auch der javascript-adapter.
ich gehe davon aus, das du den history-adapter laufen lassen hast?
dann gehe bitte im objekte-tab im iobroker in den expertenmodus (kopf-knopf am oberen ende des bildschirms)
dann erscheint in der objektauflistung noch der system knoten.
den klappst du bitte auf bis die datenpunkte zum adapter web.0 sichtbar sind
und drückst das zahlnrad für die 3 folgenden datenpunktesystem.adapter.web.0.memHeapTotal
system.adapter.web.0.memHeapUsed
system.adapter.web.0.memRssim folgebildschirm aktivierst du bitte bei history.0 und speicherst danach ab. die zahnräder der 3 punkte leuchten dann blau
die ergebnisse kannst du dann als diagramm abrufen, wenn du wieder auf das zahnrad drückst.
hier mal meine ergebnisse des rssfeed adapters. da steigt über die zeit nix an und bleibt mehr oder weniger auf dem gleichen level. zeitraum ist fast eine woche,
ich vermute mal, das irgendwo bei dir noch der wurm drin ist.
durch stoppen des rssfeed-adapters hat dein system wieder genügend speicher und das problem verschiebt sich weiter in der zeit nach hinten.
da rssfeed die ganzen feeds im hauptspeicher behält frisst er natürlich je nach anzahl der feeds und umfang der artikel nicht wenig speicher. (bei mir mit 3 feeds 80MB) - admin gui nicht mehr bedienbar.
-
versuch Du bitte auch mal was ... stell mal MAX Artikel auf 40 und speicher das ab.
-
@skokarl
ja, geht nicht.
hatte ich im januar als issue festgehalten
https://github.com/oweitman/ioBroker.rssfeed/issues/29
hatte ja gesagt, das ich die admin oberfläche überarbeiten muss -
So, die Influx DB läuft jetzt auch wieder ...... das ganze System läuft wieder kugelrund ....
werde jetzt morgen den RSS wieder einschalten und ein bisschen loggen .....
-
und auch den web und javascript adapter
-
@oliverio Ich habe gerade einen Atom-Feed der nicht mehr will. Lief seit x Monaten problemlos, sehe aber so auch nichts was ihn daran hindern würde ihn zu verarbeiten
Mit dem öffentlichen Feed habe ich es aktuell noch nicht probiert, sollte aber identisch sein. Der User-spezifische geht nur mit einem kostenlosen Account (enthält dann aber nur konfigurierte Sendungen).
Feed-Auszug (wg. Copyright Texte gekürzt):
<?xml version="1.0" encoding="utf-8"?> <feed xmlns="https://www.w3.org/2005/Atom"> <title>TV Wunschliste</title> <subtitle>Mein TV-Planer Wunschliste</subtitle> <link href="https://meine.wunschliste.de/updates" /> <link rel="self" href="https://www.wunschliste.de/xml/atom.pl" /> <updated>2022-05-06T11:20:48+02:00</updated> <author> <name>TV Wunschliste</name> </author> <id>https://meine.wunschliste.de/</id> <logo>https://www.wunschliste.de/gfx/logo.png</logo> <entry> <title>LeveragXXX (3.9) - Fr XX.05., XX.25 Uhr / VOXup</title> <link href="https://www.wunschliste.de/serie/leverage" /> <id>https://www.wunschliste.de/tv/2582052</id> <summary>Der InstallXXX ...</summary> <content type="xhtml" xml:base="https://example.org/"> <div xmlns="https://www.w3.org/1999/xhtml"> <strong>Im NamXXX</strong> <br />Der InstallXXX ... <br />mit TimoXXX <br />Regie: DeXXX </div> </content> <updated>2022-05-06T18:25:00+02:00</updated> </entry> </feed>
Eine Idee ?