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

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

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
  • Matthias Kleine
  • 14.08.2017
  • 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

FHEM-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
Ich will mehr

Smart-Home-Training von A-Z

Steig noch tiefer in die Themen ein und meistere Deine Projekte!

ioBroker-Master-Kurs

ioBroker-Master-Kurs

Mehr Infos
NodeRed-Kurs

NodeRed-Kurs

Mehr Infos
Lox-Kurs

Lox-Kurs

Mehr Infos
FHEM-Kurs

FHEM-Kurs

Mehr Infos