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

Mit ** gekennzeichne Links auf dieser Seite sind Affiliatelinks.

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

Newsletter

Trage Dich jetzt in den Newsletter ein und genieße dadurch viele Vorteile:

  • 5€-Gutschein als Dankeschön
  • Zugang zu exklusiven Inhalten
  • Rabattaktionen für Kurse
  • Angebote für Produkte

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.