NEWS
[Projekt] RSS-feed mit ioBroker
-
Bereits seit einiger Zeit verwende ich ein RSS-feed zur Anzeige relevanter Temperaturen auf dem Desktop. Das Charts-Programm Zabbix stellt so nebenbei einen solchen feed bereit. Im Zuge der Vereinfachung, und auch weil ioBroker eigene Charts-Darstellungen ermöglicht, wollte ich die Installation konsolidieren. Dazu fehlte nur noch ein Feed, der ioBroker Datenpunkte broadcastet. Also habe ich mich mit meinen dilettantischen JS-Kenntnissen mal überwunden, etwas zusammenzubasteln. Hier das sicher verbesserungswürdige, aber durchaus schon funktionierende Resultat.
Rss-Clients zur Darstellung gibts ja wie Sand am Meer, hier 2 Beispiele für den Windows Desktop:
Ticker: (klick, ruckeln kommt vom screenshot-programm)

Feedling (transparentes Gadget) Darstellung mehrer Feeds möglich.
https://sourceforge.net/projects/feedli … t/download

die JS-Baustelle:
schedule("*/3 * * * *", function () { // alle 3 Minute // //--------------timestamp var ts = new Date(); ts = formatDate(ts, "hh:mm") + " \t"; //--------------ende timestamp var header1 = (''+'<feed xmlns="http://www.w3.org/2005/Atom">'+'<title>values_BS at ' + ts + '</title>'); var title_a = ('<entry><title>'); var title_e = ('</title></entry>'); var feed_e = ('</feed>'); var fs = require('fs'); var fn = "/var/www/basel.xml"; var aussen=getState("hm-rpc.3.IEQ0020678.1.TEMPERATURE").val; var Heizg=getState("hm-rpc.3.IEQ0405376.1.TEMPERATURE").val; var wz_t=getState("hm-rpc.3.MEQ0476362.1.TEMPERATURE").val; var wz_h=getState("hm-rpc.3.MEQ0476362.1.HUMIDITY").val; var k_t=getState("hm-rpc.3.MEQ0477427.1.TEMPERATURE").val; var k_h=getState("hm-rpc.3.MEQ0477427.1.HUMIDITY").val; if (fs.existsSync(fn)) { fs.truncateSync(fn); //lösche Inhalt fs.appendFileSync(fn, header1 + "\n"); fs.appendFileSync(fn, title_a +"Aussen: " + aussen +" °C" + title_e + "\n"); fs.appendFileSync(fn, title_a +"Heizung: " + Heizg +" °C" + title_e + "\n"); fs.appendFileSync(fn, title_a +"Wohnz_t: " + wz_t +" °C" + title_e + "\n"); fs.appendFileSync(fn, title_a +"Wohnz_h: " + wz_h +" %rH" + title_e + "\n"); fs.appendFileSync(fn, title_a +"Keller_t: " + k_t +" °C" + title_e + "\n"); fs.appendFileSync(fn, title_a +"Keller_h: " + k_h +" %rH" + title_e + "\n"); fs.appendFileSync(fn, feed_e + "\n"); } else { log("RSS-file nicht gefunden - wird angelegt", "info"); fs.appendFileSync(fn, header1 + "\n"); fs.appendFileSync(fn, title_a + ts +"init feed" + title_e + "\n"); fs.appendFileSync(fn, feed_e + "\n"); } });Dieses Skript setzt ein XML-file zusammen, welches den eigentlichen feed darstellt. Dieses File muss in das Datenverzeichnis eines web-servers abgelegt werden (hier /var/www/)
Der Zugriff geschieht dann via den iobroker proxy adapter. (url: http://192.168.0.110:8082/proxy.0/www/temperature.xml)

verbesserte Version siehe hier http://forum.iobroker.net/viewtopic.php?f=21&t=8311
Vielleicht kann jemand dieses Projekt verwenden, bestenfalls dient es sogar als Anregung für ein RSS-Adapter, zumal es ja node-js RSS-feed module gibt. Mein Skript ist "hardwired" und deshalb nicht sehr universell, bzw. es bedingt zur Anpassung halt noch Handarbeit.
-
Kleiner Denkanstoß, vielleicht ist das ja eine Option:
Statt in eine Datei zu schreiben, könnte man auch einen String zusammenbasteln und den in einen State schreiben. Mit simple-api könnte man den in Rohform zurückgeben, und sollte damit keinen externen http-Server benötigen. => https://github.com/ioBroker/ioBroker.si … ainvalue-1
-
Kleiner Denkanstoß, vielleicht ist das ja eine Option:
… State ... simple-api ` hallo AlCalzone - danke für den Denkanstoss. Viele Wege führen nach Rom. Was ich suchte, war eine quick and dirty Lösung. Wenn ich was verbessere, dann gehts Richtung node.js feed - module. Aber im Moment bin ich ganz zufrieden mit der oben beschriebenen Lösung.
gruss /starfish
-
An alle Interessierten: Adapter-Request ist jetzt auf Github unter https://github.com/ioBroker/AdapterRequests/issues/30 zu finden. Bitte dort wie unter https://github.com/ioBroker/AdapterRequ … o-use-this beschrieben voten!
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden