RSS Feed in FHEM und TabletUI einbinden

Es gibt bereits eine Vielzahl an Möglichkeiten Inhalte von Dritten in FHEM einzubinden. Sei es zum Beispiel verschieden Wetterdienste oder Verkehrsmeldungen. In diesem Beitrag möchte ich euch eine weitere Möglichkeit zeigen. Nämlich das Einbinden von RSS Feeds in FHEM. Des Weiteren zeige ich euch, wie ihr diese News in euer TabletUI einbinden könnt.

Was sind RSS-Feeds?

Bevor wir jedoch mit der Einbindung beginnen, etwas Theorie. Was sind eigentlich RSS-Feeds? Jeder der sich im Internet bewegt hat bestimmt schon einmal davon gehört. RSS steht für Rich Site Summary. RSS ist ein Dateiformat für Web-Feeds. Im Grunde kann ein RSS-Feed mit einem Abonnement bei Youtube vergleichen. 

Abonniert man einen RSS-Feed (RSS-Channel), so wird man benachrichtigt, sobald es neue Inhalte auf der entsprechenden Homepage gibt. Meistens mit der Überschrift und einer kleinen Zusammenfassung des Artikels.

Dieser Nachrichten-Feed kann in FHEM eingebunden werden. Interessant wird es aber erst bei einer Einbindung in TabletUI. So hat man die Überschriften seiner gewünschten Nachrichten-Portalen auf dem heimischen Smart-Home-Tablet anzeigen lassen.

Vorbereitung

Damit FHEM die RSS-Feeds abrufen kann, muss auf dem Host-System das Perl-Modul XML installiert werden

sudo apt-get install libxml-simple-perl

Einbindung in FHEM

Die Einbindung in FHEM ist relativ einfach. Es muss nur ein Device mit der RSS-Feed-Adresse definiert werden. Hier als Beispiel wird der RSS-Feed von iFunNews verwendet.

define iFunNews rssFeed https://www.ifun.de/feed/ 3600

Die Zahl 3600 gibt den Aktualisierungsintervall in Sekunden an. In diesem Fall also eine Stunde.  

Nach ein paar Sekunden warten oder durch klicken auf "get ticker" erhält man die RSS-News als Reading.

Ähnlich wie bei den Wetter-Devices sind die einzelnen Readings nummeriert. n01_xxx - n02_xxx usw. 

Attribute

Um das Device etwas anzupassen gibt es noch ein paar Attribute, welche zusätzlich gesetzt werden können.

disable

Mit Hilfe dieses Attributs kann das Device deaktiviert werden. Dies führt dazu, dass die News nicht aktualisiert werden und man somit keine aktuellen News mehr bekommt. Dadurch könnte man in der Nacht das zyklische Aktualisieren deaktivieren und somit den Raspberry bisschen "Ruhe" gönnen.

rfDisabledText

Mit diesem Attribut kann man einen Text festlegen, welcher angezeigt werden soll, sobald der RSS-Feed deaktiviert ist.

attr iFunNews rfDisabledText Der RSS-Feed ist deaktiviert!

Die Nachricht erhält man nun als Reading und als PopUp-Fenster wenn aber über den Get-Befehl geht.

rfTickerChars

Mit diesem Attribut können Zeichen bzw. eine Zeichenfolge angegeben werden, welche die einzelnen Nachrichten-Überschriften umgeben.

attr iFunNews rfTickerChars +++

Dieses Attribut ist sinnvoll, wenn man die News aus dem Reading ".headlines" einzelne rausfiltern möchte. So kann man sich an den Trennzeichen "+++" orientieren.

rfMaxLines

Mit diesem Attribut kann die Anzahl an News angegeben werden, welche als Reading geladen werden sollen. Der Standardwert ist 10.

rfEncode

Mit rfEncode kann die Codierung der News festgelegt werden. Die Codierung erfolgt bevor die News als Reading angelegt werden. Dies kann notwendig sein, wenn die Readings wilde Zeichen enthält. Bei der Definition des Devices wird automatisch die Codierung "utf8" gewählt.

rfReadings

Mit diesem Attribut kann festgelegt werden, welche Readings erzeugt werden sollen. Dabei gibt es folgende Auswahl:

title

Der Titel der Nachricht

description

Enthält die Beschreibung der Nachricht

pubDate

Datum der Veröffentlichung

link

Link zur eigentlichen Nachricht

buildDate

Zeitpunkt der letzten Aktualisierung

imageURL

URL zum Nachrichten-Bild (falls vorhanden)

imageTitle

Titel des Nachrichten-Bildes

rfCustomTextPrepFn

Ein weiteres nützliches Attribut ist das "rfCustomTextPrepFn". Mit diesem Attribut kann man eine Funktion angeben, welche die Rohdaten bearbeitete bzw. manipuliert bevor die entsprechenden Readings gesetzt werden. Diese Funktion kann dann zum Beispiel in der "99_myUtils.pm" stehen. Wenn ihr mehr Infos haben wollt, wie ihr eine eigene Funktion erstellt, schaut auf meinem Blogbeitrag zu diesem Thema.

Eine Beispiel-Funktion könnte in etwa so aussehen. Die folgende Funktion kürzt das Reading "title" auf maximal 50 Zeichen.

sub rssFeedPrep($$) {

my($texttype,$text) = @_;

my $tLn=length $text;

# Schneidet das Reading "description" auf maximale 50 Zeichen
$text=substr($text,0,47).'...'
if ($tLn >50 && ($texttype=~/description/));

#filtert unleserliche  HASH(xxxxxx)-Readings raus 
if ($text=~/HASH\(.*\)/);

#set a custom feed title reading
return 'My Special Title' if ($texttype =~/feedTitle/);

#modifizierter Text als Rückgabewert 
return $text;
}

RSS-Feed in TabletUI einbi​nden

Das Einbinden in TabletUI erfolgt über das Label-Widget. Für jedes News-Reading wird ein separates Label erstellt. 

<div data-type="label"
data-device="iFunNews"
data-get="n00_title"
class="">
</div>

Hierbei wird das Reading "nxx_title" benutzt, welches die Überschrift der Nachricht beinhaltet. Eine geeignete Tabelle mit vier Schlagzeilen könnte wie folgt aussehen:

Man kann nun natürlich den RSS-Feed auf seinem TabletUI bisschen aufmotzen. Das Nachrichten-Bild einfügen (FTUI Widget Image), eine direkte Verlinkung (FTUI Widget Link) zur Nachricht oder die Beschreibung der Nachricht hinzufügen.

Ich hoffe ich konnte euch das Einrichten von RSS-Feeds in FHEM und TabletUI verständlich erklären.

Weitere Infos zum Modul findet ihr im passenden Forums-Eintrag.  

RSS-News in meiner FHEM Live-Demo

Wenn du möchtest, kannst du mein RSS-Device in meiner FHEM und TabletUI Live-Demo anschauen. Das RSS-Device befindet sich im Raum "Gateways" und beim TabletUI auf der Startseite.

Hinterlasse einen Kommentar

avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
  Subscribe  
Benachrichtige mich zu: