From bdb936e4f3521a63ae9ae48cfaa7ac9f42e437ef Mon Sep 17 00:00:00 2001
From: svnbenni <>
Date: Sun, 24 Apr 2016 15:46:57 +0000
Subject: [PATCH] 98_rssFeed: new attribute to generate readings containing
ticker data
git-svn-id: https://svn.fhem.de/fhem/trunk@11302 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/CHANGED | 2 ++
fhem/FHEM/98_rssFeed.pm | 72 ++++++++++++++++++++++++++++++++++++++++-
2 files changed, 73 insertions(+), 1 deletion(-)
diff --git a/fhem/CHANGED b/fhem/CHANGED
index dd09d8ddb..3c115a5d6 100644
--- a/fhem/CHANGED
+++ b/fhem/CHANGED
@@ -1,5 +1,7 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
+ - feature: 98_rssFeed: creating some readings containing ticker data.
+ This can be enabled via new attribute rfDisplayTickerReadings.
- change: FB_CALLLIST: delete also corresponding readings if a call gets
deleted
- feature: 49_SSCam: Attribute "disable" to deactivate the module added
diff --git a/fhem/FHEM/98_rssFeed.pm b/fhem/FHEM/98_rssFeed.pm
index f04d2cad8..6f4c41895 100644
--- a/fhem/FHEM/98_rssFeed.pm
+++ b/fhem/FHEM/98_rssFeed.pm
@@ -40,6 +40,10 @@ my $nb_indexlength=length($maximum_max_lines);
my $rdHeadlines='.headlines';
+my $tickerReadingsPrefix='ticker';
+my $rdToastTicker=$tickerReadingsPrefix.'Toast';
+my $rdMarqueeTicker=$tickerReadingsPrefix.'Marquee';
+
my $defaultReadings="title,description,pubDate";
my $allReadings=$defaultReadings.",link,buildDate,imageTitle,imageURL,encodedContent";
@@ -93,6 +97,14 @@ sub rssFeed_NotifyFn($$)
readingsSingleUpdate($hash,'state','defined',1);
}
+ } elsif($event =~/ATTR $name rfDisplayTickerReadings/) {
+ rssFeed_Log3 $name,4,"$name rfDisplayTickerReadings changed";
+ if(!AttrVal($name,'rfDisplayTickerReadings',undef)) {
+ fhem("deletereading $name $tickerReadingsPrefix.*",1);
+ } else {
+ readingsSingleUpdate($hash,$rdToastTicker,'waiting for next update...',1);
+ readingsSingleUpdate($hash,$rdMarqueeTicker,'waiting for next update...',1);
+ }
} elsif($event eq 'INITIALIZED') {
if(IsDisabled($name)) {
rssFeed_update($hash);
@@ -171,6 +183,7 @@ rssFeed_Initialize($)
. "rfCustomTextPrepFn " #optional preparation of Text readings before they_re set (funtion)
. "rfReadings:multiple-strict,".$allReadings." " #readings to fill (comma separated list)
. "rfDisabledText "
+ . "rfDisplayTickerReadings:1,0 "
#. "rfLatin1ToUtf8:1,0" #optional encoding using latin1ToUtf8 for readings (TEST ONLY)
. $readingFnAttributes; #default FHEM FnAttributes -> see commandref.
}
@@ -429,7 +442,7 @@ rssFeed_update(@)
}
}
- my ($i,$nachrichten,$response,@ticker,$ua,$url,$xml);
+ my ($i,$nachrichten,$response,@ticker,@mticker,$ua,$url,$xml);
$i = 0;
@@ -550,6 +563,7 @@ rssFeed_update(@)
my $h = $tt_start.$cline.$tt_end;
last unless $h;
push (@ticker,$h);
+ push (@mticker,$cline);
#Index for numbering each news-block
my $ndx=sprintf('%0'.$nb_indexlength.'s',$i);
@@ -598,6 +612,18 @@ rssFeed_update(@)
my $tickerHeadlines=join("\n", @ticker);
readingsSingleUpdate($dhash,$rdHeadlines, $tickerHeadlines,0);
+ if(AttrVal($name,"rfDisplayTickerReadings",undef)) {
+ readingsSingleUpdate($dhash,$rdToastTicker,$tickerHeadlines,1);
+ my $mTickerLine=join(" $ttt ", @mticker);
+ readingsSingleUpdate($dhash,$rdMarqueeTicker,$mTickerLine,1);
+ } else {
+ fhem("deletereading $name $tickerReadingsPrefix.*",1);
+
+ }
+
+
+
+
return;
}
@@ -689,6 +715,8 @@ return;
Result: +++ This is a sample headline +++
+ These characters are also used for "marquee"-ticker data.
+
attr <name> rfMaxLines 15
tickerToast
+++ Headline 1 +++ \n +++ Headline 2 +++ \n +++ Headline 3 +++
+ tickerMarquee
Headline 1 +++ Hadline 2 +++ Headline 3 +++
+ gzippedFeed
+++ Dies ist eine Beispiel-Schlagzeile +++
attr <name> rfMaxLines 15
tickerToast
+++ Headline 1 +++ \n +++ Headline 2 +++ \n +++ Headline 3 +++
+ tickerMarquee
Headline 1 +++ Hadline 2 +++ Headline 3 +++
+ gzippedFeed