Diskussions-Thread zum RSS-Workshop

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

Vorheriges Thema - Nächstes Thema

strauch

Danke das ist natürlich schön elegant. Das teste ich gleich mal.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

#211
Zitat von: betateilchen am 23 April 2014, 10:08:01

sub normalize ($) {
  my ($r) = @_;
  return 'manuell' if ($r eq 'manu');
  return 'manuell' if ($r eq 'manual');
  return 'offen' if ($r =~ m/pen$/);
  return 'zu' if ($r =~ m/losed$/);
  return '???'; #wichtig für unbekannten Status!
}


Das klappt sehr gut. Noch als Ergänzung für Dimmer und Rollladen. Die spucken ja auf halber Strecke zahlen aus. Ich hatte dann immer ???. Das habe ich mir folgendem Code abfangen können

return $r if ($r =~ m/\d[1-99]/);
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

JoWiemann

Hallo Betateilchen,

super Anleitung. Vielen Dank.

Um es für mich nachlesbarer zu machen habe ich das Ganze nach Word übernommen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Dr. Boris Neubert

Zitat von: betateilchen am 22 April 2014, 23:14:45
Bitteschön :)


Index: 02_RSS.pm
===================================================================
--- 02_RSS.pm (revision 5603)
+++ 02_RSS.pm (working copy)
@@ -431,6 +431,7 @@

   my @layout= split("\n", $layout);

+  my %params2;
   my %params;
   $params{font}= "Arial";
   $params{pt}= 12;
@@ -566,6 +567,10 @@
             $params{y} = $y;
             my $arg= AnalyzePerlCommand(undef, $arg);
             RSS_itemImg($S,$x,$y,$scale,$imgtype,$srctype,$arg,%params);
+          }  elsif($cmd eq "push") {
+            %params2 = %params;
+          }  elsif($cmd eq "pop") {
+            %params = %params2;
           } else {
             Log3 $name, 1, "$name: Illegal command $cmd in layout definition.";
           }



Der Code tut wohl was er soll, aber er pusht und poppt nur einmal. Von push und pop erwarte ich aber das Verhalten, Parameter auf einen Stapel zu legen. Dazu müßte ich wissen, wie man Hashes in Arrays pusht. Mit Referenzen stehe ich auf dem Kriegsfuß - oder in anderen Worten: ich bin zu faul, mir das erforderliche Wissen anzulesen.

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

betateilchen

ich auch - aber vereinfacht gesagt: hashes kannst Du beliebig ineinander verschachteln.

Und ich glaube, den Stack zum mehrfachen Push braucht man im RSS Layout nicht wirklich (ich brauch nichtmal die EINE Möglichkeit) Betrachte es als Kompromißlösung, um Quengelkinder zufriedenzustellen ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

dennis87

Zitat von: betateilchen am 22 April 2014, 21:05:26
ich auch :)


wget "http://127.0.0.1:8083/fhem/rss/dualpng.png" -O dualpng.png
scp dualpng.png pi@192.168.123.140:/var/www/tab/dualpng.png


Entschuldigt bitte, wenn es jetzt eine wirklich doofe Frage ist, aber ich stehe komplett auf dem Schlauch.

Ich möchte es genauso umsetzen, dass die Dateien in regelmäßigen Abständen auf meinen Webserver kopiert werden.

Was mir jetzt völlig unklar ist, wie (und vor allem) wo ich dieses jetzt per Cronjob festlege. Wäre echt super, wenn mir jemand den Knoten aus dem Kopf bringen könnte ;)

betateilchen

Das WIE hast Du doch selbst beantwortet: per Cronjob. Zu crontab gibt es eine hervorragende man-page, die Du mit "man crontab" bei Google problemlos findest.

Zum WO: Da das Skript auf die IP 127.0.0.1 zugreift, wird das nur auf dem gleichen Rechner funktionieren, auf dem auch das fhem läuft.

Prinzipiell kannst Du das Kopieren und Verteilen aber auch von jedem beliebigen anderen Rechner in Deinem lokalen Netzwerk aus machen. Du musst dann nur die IP 127.0.0.1 durch die "echte" IP ersetzen, die Dein fhem im Netzwerk hat.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

dennis87

Zitat von: betateilchen am 24 April 2014, 21:33:50
Das WIE hast Du doch selbst beantwortet: per Cronjob. Zu crontab gibt es eine hervorragende man-page, die Du mit "man crontab" bei Google problemlos findest.

Zum WO: Da das Skript auf die IP 127.0.0.1 zugreift, wird das nur auf dem gleichen Rechner funktionieren, auf dem auch das fhem läuft.

Prinzipiell kannst Du das Kopieren und Verteilen aber auch von jedem beliebigen anderen Rechner in Deinem lokalen Netzwerk aus machen. Du musst dann nur die IP 127.0.0.1 durch die "echte" IP ersetzen, die Dein fhem im Netzwerk hat.

Super, vielen Dank, ich wusste doch, dass ich einfach zu doof dafür bin ;).


Auch auf die Gefahr hin, dass ich nerve habe ich nun auch noch meine allerletzte Frage, die ich irgendwie nicht umgesetzt bekomme.


Ich habe nun eine Holiday-Datei namens events.holiday definiert.

In dem State steht auch der Wert "GelberSack, Bio". Wenn ich dieses jetzt jedoch in meine RSS-Datei einbinden möchte erscheint rein garnichts.

Ich habe es wie folgt umgesetzt:


condition { ReadingsVal("events","state","") eq "GelberSack" }
text 1 y  { ReadingsVal('events','state','')}
condition 1


Das aber wie gesagt ohne jeden Erfolg :(.


Wenn mir dabei noch jemand behilflich sein könnte, wäre ich auch endlich ruhig ;).



betateilchen

logisch.

Wenn im state "Gelber Sack, Bio" steht, ist das ein anderer Text als "GelberSack", mit dem Du vergleichst. Somit ist die condition nicht erfüllt, und es wird völlig korrekterweise nichts angezeigt.

Wenn Du in der Zeile ausgeben willst, ob irgendein Müll abgeholt wird, solltest Du die Abfrage einfach so gestalten:

condition { (ReadingsVal('events','state','') ne 'none') }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

dennis87

Zitat von: betateilchen am 25 April 2014, 20:58:31
logisch.

Wenn im state "Gelber Sack, Bio" steht, ist das ein anderer Text als "GelberSack", mit dem Du vergleichst. Somit ist die condition nicht erfüllt, und es wird völlig korrekterweise nichts angezeigt.

Wenn Du in der Zeile ausgeben willst, ob irgendein Müll abgeholt wird, solltest Du die Abfrage einfach so gestalten:

condition { (ReadingsVal('events','state','') ne 'none') }

Danke erstmal, das hilft prinzipiell schon einmal weiter.

Mein Problem ist aber eigentlich, dass ich selbst bei folgender Zeile keine Ausgabe bekomme

text 642 325  { ReadingsVal('events','state','')}

Eigentlich sollte doch dabei dann "Gelber Sack, Bio" ausgegeben werden, oder ?

betateilchen

im Prinzip ja. Solange es keine Bedingung gibt, die die Ausgabe verhindert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

dennis87

Zitat von: betateilchen am 25 April 2014, 21:45:07
im Prinzip ja. Solange es keine Bedingung gibt, die die Ausgabe verhindert.

Da ist rein garnichts, was das verhindern könnte, ich habe es jetzt z.B. mal an den Anfang der Datei gehangen, aber trotzdem kein Erfolg :(. So langsam gehen mir die Ideen aus...

yogiflop

Das Event tritt doch nur ein, wenn es am gleichen Tag ist, oder ?


Gesendet von irgendwo unterwegs
CubieTruck mit FHEM 5.7
433MHz, 868MHz HMLan
div. Baumarktsteckdosen, 3x HM
div. MiLight's

dennis87

Zitat von: yogiflop am 25 April 2014, 22:19:08
Das Event tritt doch nur ein, wenn es am gleichen Tag ist, oder ?


Gesendet von irgendwo unterwegs

Ja genau, es ist ja auch aktuell aktiv, steht auch unter state, wird jedoch nicht über die abfrage angezeigt

betateilchen

Zeig doch mal dein RSS Layout, anstatt Dir hier jeden Wurm einzeln aus der Nase ziehen zu lassen.

Und auch bitte ein "list events" machen und die Ausgabe posten.


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