RSS Feed Beispiel

Begonnen von Mark, 05 Januar 2013, 09:46:33

Vorheriges Thema - Nächstes Thema

Mark

Hallo zusammen,

wie folgt erzeuge ich einen einfachen RSS Feed.

Gruß Mark

########################################
# RSS Feed erzeugen Mark: 04.01.2013
# Passendes notify Beispiel
# define rss.at at +*00:05:10 { rss() }
# Datei 99_rss.pm
#
########################################
package main;

use strict;
use warnings;

########################################
sub
rss_Initialize($$)
{
  my ($hash) = @_;
}
sub rss()
{
my ($tfa,$hzg,$tk,$ts,$tankinhalt);
$tfa = fhem "list TF_Aussen STATE";
$hzg = ReadingsVal("Heizung","state","0");
$tk = ReadingsVal("Tk","state","0");
$ts = ReadingsVal("Ts","state","0");
$tankinhalt = ReadingsVal("Tankinhalt","state","0");
my $outfile = 'c:\\xampp\\meinrss.xml';
open (FILE, "> $outfile") || die "problem opening $outfile\n";
print FILE "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n";
print FILE "<rss version=\"2.0\">\n\n";
print FILE "  <channel>\n";
print FILE "    <title>FHEM RSS</title>\n\n";
print FILE "    <item>\n";
print FILE "      <title>$tfa</title>\n";
print FILE "<guid>Link guid</guid>\n";
print FILE "    </item>\n\n";
print FILE "    <item>\n";
print FILE "      <title>Heizung: $hzg TK: $tk TS: $ts</title>\n";
print FILE "    </item>\n\n";
print FILE "    <item>\n";
print FILE "      <title>Tankinhalt: $tankinhalt Liter</title>\n";
print FILE "    </item>\n\n";
print FILE "  </channel>\n\n";
print FILE "</rss>\n";
close(FILE);
}

1;

stobor

Hallo Mark,

ich nutze FHEM mit der FritzBox 7390. Wie kann ich denn da bspw. Aktoren-Zustände und Temperaturwerte als Text per RSS bereitstellen, so dass sie sich ggf. auf einem "normalen" RSS-Reader oder dem M-TF anzeigen lassen.

Danke für Hilfe.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Tobias

IMHO gibts aber ein RSS-Modul
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Mark

Hi,

mit dem obigen Code wird die Datei c:\\xampp\\meinrss.xml erstellt.
c:\\xampp\\ ist mein Apache www Verzeichnis.
Mein Internetradio holt sich den Feed über http://meine_domaine.de/meinrss.xml
Der Inhalt der erstellten meinrss.xml sieht wie folgt aus.

Gruß Mark

<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0">

  <channel>
    <title>FHEM RSS</title>

    <item>
      <title>TF_Aussen T: 5.1  H: 92.3  Bat: ok D: 4.0
</title>
<guid>Link guid</guid>
    </item>

    <item>
      <title>Heizung: off TK: 61 TS: 10</title>
    </item>

    <item>
      <title>Tankinhalt: 1170 Liter</title>
    </item>

  </channel>

</rss>

Mark

Ja gibt es. RSS erzeugt allerdings ein Statusbild im jpg Format und keinen Text.
Funktioniert auf meinem Windows System leider nicht.
define Testrss RSS liefert Unknown module rss

Gruß Mark

Mark

Zitat von: Mark schrieb am Di, 08 Januar 2013 20:48Funktioniert auf meinem Windows System leider nicht.
Korrektur, funktioniert einwandfrei :-)

oboa

Hallo Mark,

die Variante mit dem Text RSS finde ich super. Werde ich gleich mal umsetzen.
Der nächste Schritt wird dann sein, das xml-file mit ftpput auf meinen Webspace zu senden. Sollte doch machbar sein, oder?
Raspi mit CUL, FS20ST, FS20KSE , S300TH , OZW672, (DS1820 , DS18B20)

stobor

Hallo Mark,

ich bin bzgl. der Programmierung noch etwas unwissend, aber fhem.cfg klappt ganz gut.
Heißt das, dass ich

1. Auf der FritzBox im Verzeichnis fhem/FHEM eine Datei 99_rss.pm anlege,
2. Diese entsprechend meiner FS20-Geräte definiere
3. In der fhem.cfg einen passenden Aufruf definiere, so dass regelmäßig die xml geschrieben wird
?

Welchen Pfad muss ich denn bei meiner Konfiguration (FHEM auf FritzBox 7390 (FW 84.05.50 mit Fhem vom FHEMwiki) für $outfile angeben?
Unter welcher url wäre das rss denn dann auf der FritzBox erreichbar?

Danke für Hilfe.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

WiKa

Hallo stobor,

wie immer ohne Gewähr:

ZitatUnter welcher url wäre das rss denn dann auf der FritzBox erreichbar?
Die Frage kann ich für deine FW-Version der FB nicht genau beantworten.

Sollte die FW bereits einen "ftpuser" haben, teste folgenden Aufruf im Browser:

ftp://ftpuser:ftpuser-password@IP-Adresse-Fritzbox/fhem/log/fhem-2013.log


-> funktioniert bei mir.

ZitatWelchen Pfad muss ich denn bei meiner Konfiguration... für $outfile angeben?
Schreibe testweise die Datei in das Logverzeichnis deiner FB.
Die Pfadangabe solltest Du aus "attr global logfile" deiner fhem.cfg übernemen können.

-> hier nicht getestet, da zur Zeit kein Bedarf an RSS-Feed.

VG,
WiKa

FB7390 FW:FRITZ!OS 05.50 / RFXTRX433 FW:433_64 / ELRO AB440R (modified to IT-Code) - AB440S (IT-Code) - AB440IS (IT-Code) / Oregon THGN132N - THN132N - THGR122N / Intertechno PAR-1000 - PAR1500

stobor

Das haut bei mir alles nicht hin.

auf der FritzBox gibt es natürlich kein C:-Laufwerk. Wie kann ich dass denn FritzBox-konform eintragen?
Ich habe bspw. mal
my $outfile = './log/meinrss.xml';
probiert. Im log-Verzeichnis kommt aber nix an.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

stobor

Das haut bei mir alles nicht hin.
 
auf der FritzBox gibt es natürlich kein C:-Laufwerk. Wie kann ich dass denn FritzBox-konform eintragen?
Ich habe bspw. mal
my $outfile = './log/meinrss.xml';probiert. Im log-Verzeichnis kommt aber nix an.

Außerdem kommen im Log immer Fehler:
Use of uninitialized value $tfa in concatenation (.) or string at ./FHEM/99_rss.pm line 34.
99_rss.pm sieht derzeit so aus:

package main;
 
use strict;
 use warnings;
 
########################################
 sub
 rss_Initialize($$)
 {
 my ($hash) = @_;
 }
 sub rss()
 {
 my ($tfa,$tk);
 $tfa = fhem "list KlimaGarten STATE";
 #$hzg = ReadingsVal("Heizung","state","0");
 $tk = ReadingsVal("Flurlicht","state","0");
 #$ts = ReadingsVal("Ts","state","0");
 #$tankinhalt = ReadingsVal("Tankinhalt","state","0");
 my $outfile = './log/meinrss.xml';
 open (FILE, "> $outfile") || die "problem opening $outfile\n";
 print FILE "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n";
 print FILE "<rss version=\"2.0\">\n\n";
 print FILE " <channel>\n";
 print FILE " <title>FHEM RSS</title>\n\n";
 print FILE " <item>\n";
 print FILE " <title>$tfa</title>\n";
 print FILE "<guid>Link guid</guid>\n";
 print FILE " </item>\n\n";
 print FILE " <item>\n";
 print FILE " <title>Heizung: hzg TK: $tk TS: ts</title>\n";
 print FILE " </item>\n\n";
 print FILE " <item>\n";
 print FILE " <title>Tankinhalt: tankinhalt Liter</title>\n";
 print FILE " </item>\n\n";
 print FILE " </channel>\n\n";
 print FILE "</rss>\n";
 close(FILE);
 }
 
1;
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

stobor

Also ich bekomme jetzt immerhin ein XML angelegt. Allerdings kann ich das per URL im Browser nicht aufrufen. Ich komme immer wieder auf die FHEM-Startseite, egal, in welches Verzeichnis ich das xml mal testweise hinkopiere. Wo kann ich dass denn am besten hinlegen, damit es aufrufbar ist (FHEM 5.3 auf FritzBox7390)?
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

hypnorex

Ich bekomme im Log folgende Fehlermeldung:


2013.04.21 11:59:36 3: Undefined subroutine &main::rss called at (eval 5623) line 1.


In der fhem.cfg habe ich folgenden Eintrag:


define rss.at at +*00:05:10 { rss() }


Im Verzeichnis /usr/share/fhem/FHEM habe ich eine Datei 99_rss.pm angelegt:


package main;

use strict;
use warnings;

########################################
sub
rss_Initialize($$)
{
my ($hash) = @_;
}
sub rss()
{
my ($tfa,$tk);
#$hzg = ReadingsVal("Heizung","state","0");
$tfa = ReadingsVal("ku_Fenster","state","0");
$tk = ReadingsVal("wz_Licht","state","0");
my $outfile = '/var/log/fhem/meinrss.xml';
open (FILE, "> $outfile") || die "problem opening $outfile\n";
print FILE "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n";
print FILE "<rss version=\"2.0\">\n\n";
print FILE " <channel>\n";
print FILE " <title>FHEM RSS</title>\n\n";
print FILE " <item>\n";
print FILE " <title>$tfa</title>\n";
print FILE "<guid>Link guid</guid>\n";
print FILE " </item>\n\n";
print FILE " <item>\n";
print FILE " <title>Heizung: hzg TK: $tk TS: ts</title>\n";
print FILE " </item>\n\n";
print FILE " <item>\n";
print FILE " <title>Tankinhalt: tankinhalt Liter</title>\n";
print FILE " </item>\n\n";
print FILE " </channel>\n\n";
print FILE "</rss>\n";
close(FILE);
}

1;



Was fehlt hier?

EDIT:
So, ein Neustart hat geholfen. Das XML-File wird nun erzeugt.

Aber wie kann ich das XML-File im Browser öffnen? Welche Adresse? Es erscheint immer die Startseite von FHEM.