Diskussions-Thread zum RSS-Workshop

Begonnen von betateilchen, 15 April 2014, 19:54:33

Vorheriges Thema - Nächstes Thema

Michi240281

#585
Hallo zusammen,

habe auch heute meinen RSS feed angefangen. Ein paar Sachen habe ich auch schon hinbekommen, jedoch habe ich ein paar Fragen und hoffe, Ihr könnt mir diese dank Eurer Erfahrungen beantworten:

- Wie bekomme ich das Yahoo Wetter integriert? Muss ich jedes Reading einzeln einlesen und entsprechend dann ein Icon ausgeben oder geht das irgendwie einfacher?
- Habe die Anrufe in Abwesenheit eingebaut. Allerdings werden halt statisch alle verpassten Anrufe angezeigt. Wie bekomme ich das hin, dass

     a.) nur die "neuen" verpassten Anrufe angezeigt werden, d.h. z.B. jeden Abend wird die Liste irgendwie "zurückgesetzt" oder so
     b.) sollte es keinen (neuen) Anruf in Abwesenheit geben, "keine Anrufe in Abwesenheit" ausgegeben/dargestellt wird?

Bislang sieht meine rss.layout bzgl. der Anrufliste (fb_callmonitor) so aus:

#Anrufliste
text 400 270 "Verpasste Anrufe"
line 380 240 380 440
line 1000 240 1000 440
condition {(ReadingsVal('my_callmonitor','A0','') eq 'in_notconnected')}
pt 12
text 400 300 { ReadingsVal('my_callmonitor','B0','')}
text 600 300 { ReadingsVal('my_callmonitor','C0','')}
text 800 300 { ReadingsVal('my_callmonitor','D0','')}
condition 1


- Wie bekomme ich da diese Unwetterwarnungen rein?

- Ich habe das Attribut "refresh 60" vergeben. Ist die Zeitangabe in Sekunden? Weil dann funktioniert es irgendwie nicht. Die Seite wird nicht alle 60 Sekunden neu geladen! Was muss ich da beachten? (in der command ref steht dazu nicht mehr)

Besten Dank schonmal!

Viele Grüße
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Dr. Boris Neubert

Zitat von: Michi240281 am 01 Februar 2015, 22:18:34
- Wie bekomme ich das Yahoo Wetter integriert? Muss ich jedes Reading einzeln einlesen und entsprechend dann ein Icon ausgeben oder geht das irgendwie einfacher?

Schau Dir mal die fhem.demo.cfg an.

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

In der fhem.cfg.demo sind doch keine RSS-Layouts zu finden, oder? Hier ein Beispiel aus meiner Konfiguration, die direkt in 02_RSS funktioniert (Devicenamen entsprechend anpassen!)



font /usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf
pt 10
rgb "FFFFFF"

text  40 260 "Aktuell:"
img  160 230 0.5 png file { "/opt/fhem/www/images/default/weather/". ReadingsVal("MG_Wetter","icon",""). ".png" }
text 280 260 { ReadingsVal("MG_Wetter","condition","?"). ", Temperatur: ". ReadingsVal("MG_Wetter","temp_c","?"). "°C, Luftfeuchtigkeit: ". ReadingsVal("MG_Wetter","humidity","?"). "%, ". ReadingsVal("MG_Wetter","wind_condition","?") }
text  40 320 { "Vorhersage ". ReadingsVal("MG_Wetter","fc1_day_of_week","?"). ":" }
img  160 290 0.5 png file { "/opt/fhem/www/images/default/weather/". ReadingsVal("MG_Wetter","fc1_icon",""). ".png" }
text 280 320 { ReadingsVal("MG_Wetter","fc1_condition","?"). ", min: ". ReadingsVal("MG_Wetter","fc1_low_c","?"). "°C, max: ". ReadingsVal("MG_Wetter","fc1_high_c","?"). "°C" }
text  40 380 { "Vorhersage ". ReadingsVal("MG_Wetter","fc2_day_of_week","?"). ":" }
img  160 350 0.5 png file { "/opt/fhem/www/images/default/weather/". ReadingsVal("MG_Wetter","fc2_icon",""). ".png" }
text 280 380 { ReadingsVal("MG_Wetter","fc2_condition","?"). ", min: ". ReadingsVal("MG_Wetter","fc2_low_c","?"). "°C, max: ". ReadingsVal("MG_Wetter","fc2_high_c","?"). "°C" }

img  600 288 1 png file { "/opt/fhem_add/images/yahoo.png" }
text 560 380 { "Stand: ". ReadingsVal("MG_Wetter","current_date_time","") }

#



erzeugt folgende Ausgabe im RSS:

(http://up.picr.de/20867356ak.png)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michi240281

@Betateilchen: Besten Dank, werde ich heute Abend direkt testen.  :)
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

moonsorrox

Zitat von: Michi240281 am 01 Februar 2015, 22:18:34
- Habe die Anrufe in Abwesenheit eingebaut. Allerdings werden halt statisch alle verpassten Anrufe angezeigt. Wie bekomme ich das hin, dass

     a.) nur die "neuen" verpassten Anrufe angezeigt werden, d.h. z.B. jeden Abend wird die Liste irgendwie "zurückgesetzt" oder so

- Ich habe das Attribut "refresh 60" vergeben. Ist die Zeitangabe in Sekunden? Weil dann funktioniert es irgendwie nicht. Die Seite wird nicht alle 60 Sekunden neu geladen! Was muss ich da beachten? (in der command ref steht dazu nicht mehr)


also hier mal etwas von mir zu deinen Anrufen, ich habe da auch ne Weile dran gebastelt.

Ich nutze ja das (TM) Modul da sieht das so aus, der Befehl lautet bei mir "incomming_noconnect" diese Liste wird Abends nach 23Uhr gelöscht, wie das mit den Minuten($min) aussieht, da muss der perl Begriff anders lauten, dass weiß ich aber nicht.

#Anrufliste
pt 14
rgb 4876FF  # blau
text 730 335 "Verpasste Anrufe"

# 1. Anruf Datum, Zeit, Anrufer, Nummer
moveto 400 365
condition {(ReadingsVal('CallMon','A0','') eq 'incoming_noconnect') && ($hour < 23) }
# Datum
pt 12
rgb F8F8FF  # weiss
text x y { substr((ReadingsVal('CallMon','B0','')),5,12) }
# Zeit
moveby 110 0
text x y { substr((ReadingsVal('CallMon','B0','')),0,5). '  Uhr' }
# Anrufer
moveby 120 0
text x y { ReadingsVal('CallMon','C0','')}
# Nummer
moveby 150 0
text x y { ReadingsVal('CallMon','D0','')}
condition 1


zu deinem "refresh 60" das mußt du in der html Datei eintragen die dein Rss.png darstellt so in der Art und ja das sind Sekunden..

<html>
<head>
<title>Dein-Titel</title>
<meta http-equiv="refresh" content="60" />
</head>
<body topmargin="0" leftmargin="0" margin="0" padding="0" >
<img src="http://<deine IP>:8083/fhem/rss/rss.png"/>
</body>
</html
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Michi240281

#590
Besten Dank für deinen Code bzgl. der Anrufliste.

Ich konnte das an meinen callmonitor anpassen! :)

Nur wie ist das mit der Uhrzeit: Die Bedingung ist ja nur wahr, wenn es vor 23 Uhr ist. Gilt das denn dann nur für den aktuellen Tag oder wird dann am nächsten Tag vor 23 Uhr wieder die verpassten Anrufe der Vortage angezeigt?

Edit: Noch ne andere Frage: Kann man eigentlich im RSS auch SVG Icons verwenden? Derweil mache ich mir jedes SVG einzeln farbig, kopiere es ins Fhem-Verzeichnis zurück und verwende es dann als png.
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

hotwebnet

#591
Hallo User, ich arbeite immer noch den Workshop 02_RSS durch, um Ihn richtig zu verstehen. Nun bin ich bei den Bildern, über die URL wie es erklärt ist habe ich mit diesem Code keine Probleme.....
img 0.5 0.5 1 png url "http://fhem.de/www/images/default/fhemicon.png"


Nun habe ich das gleiche Problem wie viele andere User vor mir. schaffe es aber nicht es zu lösen.
Ich habe die Maus aus dem Workshop nach /opt/fhem/www/images/dark kopiert, und möchte sie mit file in 02_RSS anzeigen lassen.

Also schreibe ich in RSS.Layout


img 0.5 0.5 1 png "/opt/fhem/www/images/dark/maus.png"

Nun sollte die Maus doch angezeigt werden, oder mache ich einen Denkfehler.....
Danke für deine Hilfe, aber ich komme hier nicht weiter.....

moonsorrox

#592
Zitat von: hotwebnet am 03 Februar 2015, 00:15:11
img 0.5 0.5 1 png "/opt/fhem/www/images/dark/maus.png"
img 0.5 0.5 1 png file "/opt/fhem/www/images/dark/maus.png"
evtl. nochmal dein fhem Neustarten, dann geht das auch



Zitat von: Michi240281 am 02 Februar 2015, 22:15:42
Edit: Noch ne andere Frage: Kann man eigentlich im RSS auch SVG Icons verwenden? Derweil mache ich mir jedes SVG einzeln farbig, kopiere es ins Fhem-Verzeichnis zurück und verwende es dann als png.
commandref:
The media RSS feed delivers status pictures either in JPEG or PNG format.

Das mit der Uhrzeit hatte ich nur am Tage ausprobiert und für dich eingefügt, ich nutze das nicht und weiß es nicht.
Bei mir werden immer die aktuellen 3 Nummern angezeigt

EDITH:// ja du hast Recht er zeigt dann am aktuellen Tag wieder die Nummer an, da muss man das wohl ganz anders machen, dass weiß ich aber leider nicht, da ich mit Perl nicht so fit bin.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

hotwebnet

Danke sie ist da.....ich sehe vor lauter Bäumen den wald nicht mehr.....danke hatte wirklich file vergessen....
es gibt auch noch einen anderen Befehl für Bilder....

moonsorrox

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Michi240281

@Betateilchen: Besten Dank für deinen Code bzgl. des Wetters. :) Habe es erfolgreich an mein RSS angepasst. Ich habe dazu nur noch eine Frage: Wie bekomme ich es hin, dass statt der Formatierung der Wochentage "Mo, Di" die ausgeschriebenen Wochentage, also Montag, Dienstag etc. angezeigt werden können? Vermutlich muss man eine Funktion in 99_myUtils anlegen, leider bin ich darin überhaupt nicht bewandert! :(

Weiß jmd, wie man es hinbekommt, dass immer nur die tagesaktuellen Anrufe in Abwesenheit angezeigt werden? Die zusätzliche Abfrage mit $hour<23 funktioniert leider nicht, weil sie auch die Einträge der Vortage ausgibt.
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

betateilchen

Zitat von: Michi240281 am 03 Februar 2015, 10:25:25
statt der Formatierung der Wochentage "Mo, Di" die ausgeschriebenen Wochentage, also Montag, Dienstag etc. angezeigt werden können

Am einfachsten einen hash definieren, und dann die Werte aus dem hash verwenden.


Zitat von: Michi240281 am 03 Februar 2015, 10:25:25
dass immer nur die tagesaktuellen Anrufe in Abwesenheit angezeigt werden? Die zusätzliche Abfrage mit $hour<23 funktioniert leider nicht,

timestamp des Anrufes mit dem timestamp der vergangenen Mitternacht vergleichen. Wenn die Differenz positiv ist, war der Anruf heute.

Der Vergleich mit "$hour < 23" würde Dir übrigens niemals Anrufen zwischen 23:00:00 und 23:59:59 anzeigen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen am 03 Februar 2015, 11:17:10
Am einfachsten einen hash definieren, und dann die Werte aus dem hash verwenden.



in der 99_myUtils:

sub tagConvert($) {
my ($d) = @_;
my %tage = ("Mo" => "Montag"; "Di" => "Dienstag", usw);

return $tage{$d};
}


im Layout:

text  40 320 { "Vorhersage ". tagConvert(ReadingsVal("MG_Wetter","fc1_day_of_week","?")). ":" }



-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michi240281

Vielen vielen Dank Betateilchen!! :)

Probiere ich heute Abend direkt aus.

Kannst du mir bzgl. des timestamp Vergleichs auf die Sprünge helfen? Soll ich das in Fhem vergleichen (Dummy?) oder direkt in der rss.layout? Und woher bekomme ich den timestamp der letzten Mitternacht?
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

betateilchen

Vergleichen kannst Du das am Besten in einer Funktion in Deiner 99_myUtils.pm.

Timestamp der letzten Mitternacht =


time_str2num(undef) - secondsSinceMidnight();


Jede Uhrzeitangabe läßt sich in einen timestamp (Sekunden) umwandeln. Schau mal in die Datei 99_Utils.pm., dort sind verschiedene Konvertierungsfunktionen enthalten.

Also ist jeder Anruf, dessen  timestamp  größer ist als der timestamp der letzten Mitternacht "heute" passiert.


sub secondsSinceMidnight(){
my @time = localtime();
return (($time[2] * 3600) + ($time[1] * 60) + $time[0]);
}
sub secondsToMidnight(){
return 86400 - secondsSinceMidnight();
}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!