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.
-
Coole Idee… Ich habe man ein RSS-Creator Adapter in unsere Wunschliste hinzugefügt.
https://trello.com/c/1JWvdbz4/278-adapt ... ed-creator
Grüße,
ldittmar
-
[im 1. Post eingefügt]
-
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!