
FHEM Tutorial-Reihe - Part 36: RSS-Feed Infos abrufen und Push-Benachrichtigung bei neuen Beiträgen
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
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!