FHEM Tutorial-Reihe - Part 36: RSS-Feed Infos abrufen und Push-Benachrichtigung bei neuen Beiträgen

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

Achtung: Dieser Inhalt ist nicht mehr aktuell! Es ist nicht empfohlen nach dieser Anleitung vorzugehen.
FHEM Tutorial-Reihe - Part 36: RSS-Feed Infos abrufen und Push-Benachrichtigung bei neuen Beiträgen
FHEM Tutorial-Reihe - Part 36: RSS-Feed Infos abrufen und Push-Benachrichtigung bei neuen Beiträgen
  • 14.08.2017
  • Veraltet!
  • Level 1
  • Integration
  • Webservice

FHEM kann auch wunderbar RSS-Feeds parsen und macht es einem somit sehr leicht, auf dem Laufenden zu bleiben. In diesem Tutorial wird der RSS-Feed von haus-automatisierung.com eingebunden und wir lassen uns eine Push-Notifications mit Link aufs Smartphone senden, sobald ein neuer Beitrag online verfügbar ist.

Was wird benötigt?

  • Eine FHEM-Installation
  • Die App Pushover + entsprechende Konfiguration in FHEM

Video

ioBroker-Kurs

Befehle

define WEB_myRSS rssFeed https://haus-automatisierung.com/feed.xml 18000
attr WEB_myRSS rfAllReadingsEvents 1

Hier die neue Funktion in der myUtils, welche das Datum ein weniger schöner aufbereitet.

use DateTime::Format::Strptime;

sub RSSFeedTimeToDDMMYY($) {
    # Sat, 18 Mar 2017 00:00:00 +0100
    # Mon, 14 Aug 2017 05:00:33 +0000

    # http://search.cpan.org/~drolsky/DateTime-Format-Strptime-1.74/lib/DateTime/Format/Strptime.pm

    my ($rssTime) = @_;
    my $pattern = "%a, %d %b %Y %H:%M:%S %z";

    my $strp = DateTime::Format::Strptime->new(pattern => $pattern);
    my $dt = $strp->parse_datetime($rssTime);

    return $dt->dmy('.');
}

Zum Test können diese Aufrufe dann genutzt werden

{RSSFeedTimeToDDMMYY("Mon, 14 Aug 2017 05:00:33 +0000")}
{RSSFeedTimeToDDMMYY(ReadingsVal("WEB_myRSS", "n00_pubDate", "Thu, 01 Jan 1970 00:00:00 +0000"))}

Um den Titel zusammen mit dem Datum des Beitrags im Status zu sehen, wird der folgende Code als stateFormat genutzt

{sprintf("%s - %s", RSSFeedTimeToDDMMYY(ReadingsVal("WEB_myRSS", "n00_pubDate", "Thu, 01 Jan 1970 00:00:00 +0000")), ReadingsVal("WEB_myRSS", "n00_title", ""))}

Das erste DOIF (im Video mit Screenshot wurde wie folgt definiert)

define doif_RSSPushover DOIF ([WEB_myRSS:n00_title] and [?WEB_myRSS:n00_title] ne [$SELF:T_n00_title]) (setreading $SELF T_n00_title [WEB_myRSS:n00_title], set WEB_Pushover msg title=[WEB_myRSS:n00_title] url_title="Jetzt lesen" action="[WEB_myRSS:n00_link]" expire=18000)
attr doif_RSSPushover checkReadingEvent 1
attr doif_RSSPushover do always

Meine favorisierte Variante sieht allerdings so aus. Eigentlich wurde nur title durch message ersetzt und es wird der Device-State in der Pushover-Notification verwendet anstelle des Titels. Immerhin haben wir uns sehr viel Arbeit damit gemacht, alles schön zu formatieren. Da sollte man das auch nutzen.

define doif_RSSPushover DOIF ([WEB_myRSS:n00_title]) (set WEB_Pushover msg message="[WEB_myRSS]" url_title="Jetzt lesen" action="[WEB_myRSS:n00_link]" expire=18000)
attr doif_RSSPushover checkReadingEvent 1
attr doif_RSSPushover do always

Transparenz-Hinweis (Level 1)

An diesem Beitrag ist kein Hersteller beteiligt! Sämtliche Produkte habe ich selbst gekauft und trage die kompletten Kosten für diesen Beitrag alleine! Die Inhalte wurden somit von niemandem gesehen oder abgestimmt. Es handelt sich zu 100% um meine persönliche Meinung und Erfahrung!

» Mehr erfahren

Du willst mehr?

Smart-Home-Trainings von A-Z

Steig' noch tiefer in die Themen ein und meistere Deine Projekte! Über 16.000 Teilnehmer konnten sich schon von der Qualität der Online-Kurse überzeugen.