Diskussions-Thread zum RSS-Workshop

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

Vorheriges Thema - Nächstes Thema

betateilchen

#615
Das ist doch ganz simpel... das moveto muss vor der ersten condition stehen und in jedem Element, das eventuell angezeigt werden soll, muss ein moveby stehen.

Beispiel: Die Elemente sollen ab x=100,y=100 ausgegeben werden und immer in Zeilen mit 20px Abstand stehen:



moveto 100 80

condition {für das erste Element}
moveby 0 20
text x y {hier steht die Ausgabe für das erste Element}

condition {für das zweite Element}
moveby 0 20
text x y {hier steht die Ausgabe für das zweite Element}

usw.



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

Michi240281

Ganz genau, so einfach ist das leider nicht, weil es auch sein könnte, dass z.B. A0 und A1 eingehende Anrufe sind. Und dann müsste A2 an der Stelle von A0 angezeigt werden. Habe es bisher für A0-A2, also für die letzten 3 Anrufe hinbekommen. Ich kann heute Abend den Code posten.
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 05 Februar 2015, 11:29:09
Ganz genau, so einfach ist das leider nicht,

Doch. Genau so einfach ist es. Der Schildkröte ist es doch scheißegal, was da angezeigt wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ob ein Element angezeigt wird oder nicht entscheidet einzig und alleine die condition und nie die Schildkröte.


#
pt 24
font arial
rgb "FFFFFFFF"
line - 0 100 800 100
line - 100 0 100 600

moveto 100 80

condition 0
moveby 0 20
text - x y "Ich bin der erste mögliche Eintrag A0"

condition 0
moveby 0 20
text - x y "Ich bin der zweite mögliche Eintrag A1"

condition 1
moveby 0 20
text - x y "Ich bin der dritte mögliche Eintrag A2"

#


(http://up.picr.de/20897927hs.jpg)

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

Michi240281

Muss ich heute Abend nochmal testen! Das Problem ist meine ich, dass in der condition nicht nur ein "text" Befehl definiert ist, sondern mehrere, für die einzelnen Readings.

Hier mal mein aktueller Code:

#Verpasste Anrufe
pt 18
text 400 270 "Verpasste Anrufe"
line 900 240 900 440
line 370 240 370 440
# 1. Anruf Datum, Zeit, Anrufer, Nummer
moveto 400 300
condition {(ReadingsVal('my_callmonitor','A0','') eq 'in_notconnected') && ((time_str2num(undef) - tconvert(ReadingsVal('my_callmonitor','B0',''))) <= secondsSinceMidnight())}
# Datum
pt 12
text 400 y { substr((ReadingsVal('my_callmonitor','B0','')),10,22) }
# Zeit
moveby 110 0
text x y { substr((ReadingsVal('my_callmonitor','B0','')),0,5). '  Uhr' }
# Anrufer
moveby 120 0
text x y { ReadingsVal('my_callmonitor','C0','')}
# Nummer
moveby 150 0
text x y { ReadingsVal('my_callmonitor','D0','')}
moveto 400 325
condition 1


# 2. Anruf Datum, Zeit, Anrufer, Nummer
condition {(ReadingsVal('my_callmonitor','A1','') eq 'in_notconnected') && ((time_str2num(undef) - tconvert(ReadingsVal('my_callmonitor','B1',''))) <= secondsSinceMidnight())}
# Datum
pt 12
text x y { substr((ReadingsVal('my_callmonitor','B1','')),10,22) }
# Zeit
moveby 110 0
text x y { substr((ReadingsVal('my_callmonitor','B1','')),0,5). '  Uhr' }
# Anrufer
moveby 120 0
text x y { ReadingsVal('my_callmonitor','C1','')}
# Nummer
moveby 150 0
text x y { ReadingsVal('my_callmonitor','D1','')}
moveto 400 325
condition 1


# 3. Anruf Datum, Zeit, Anrufer, Nummer
condition {(ReadingsVal('my_callmonitor','A1','') eq 'in_notconnected') && ((ReadingsVal('my_callmonitor','A2','') eq 'in_notconnected') && ((time_str2num(undef) - tconvert(ReadingsVal('my_callmonitor','B2',''))) <= secondsSinceMidnight()))}
moveby 0 25
# Datum
pt 12
text x y { substr((ReadingsVal('my_callmonitor','B2','')),10,22) }
# Zeit
moveby 110 0
text x y { substr((ReadingsVal('my_callmonitor','B2','')),0,5). '  Uhr' }
# Anrufer
moveby 120 0
text x y { ReadingsVal('my_callmonitor','C2','')}
# Nummer
moveby 150 0
text x y { ReadingsVal('my_callmonitor','D2','')}
moveto 400 300
condition 1


# 4. Anruf Datum, Zeit, Anrufer, Nummer
condition {(ReadingsVal('my_callmonitor','A3','') eq 'in_notconnected') && ((time_str2num(undef) - tconvert(ReadingsVal('my_callmonitor','B3',''))) <= secondsSinceMidnight())}
moveby 0 25
# Datum
pt 12
text x y { substr((ReadingsVal('my_callmonitor','B3','')),10,22) }
# Zeit
moveby 110 0
text x y { substr((ReadingsVal('my_callmonitor','B3','')),0,5). '  Uhr' }
# Anrufer
moveby 120 0
text x y { ReadingsVal('my_callmonitor','C3','')}
# Nummer
moveby 150 0
text x y { ReadingsVal('my_callmonitor','D3','')}
condition 1
moveto 400 300


Bzgl. der Abfrage, ob der Anruf heute war, gibt es immer noch ein Problem! Gestern wurden die Anrufe von gestern alle einwandfrei angezeigt. Als ich dann um 0:10 Uhr nochmal aufs RSS geschaut habe, waren alle weg. Heute morgen habe ich dann 2 Testanrufe (in Abwesenheit) getätigt, die jetzt wieder nicht angezeigt werden. Irgendwo ist also noch der Wurm drin! :(
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: betateilchen am 05 Februar 2015, 12:26:42
Ob ein Element angezeigt wird oder nicht entscheidet einzig und alleine die condition und nie die Schildkröte.
genau das dachte ich auch... Ich werde das heute nochmals antesten, denn SICHER weißt du am besten wie es geht.  ;)

Ich hatte nur in deinem vorigen Post etwas entdeckt und dachte das der Fehler von mir darin begraben liegt.
Ich meinte die Komma's bei moveto und moveby, denn die habe ich nicht...
moveto 100,80

condition {für das erste Element}
moveby 0,20
text x y {hier steht die Ausgabe für das erste Element}
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

Ah jetzt weiß ich, was das Problem ist:

Wenn condition1 erfüllt ist, läuft die Schildkröte dann auch in x Richtung, um die einzelnen Readings auszugeben. Danach muss sie ja wieder zurücklaufen, um für die 2. condition wieder die richtige Startposition zu haben. DAS ist das Problem! Bei 2 conditions geht das noch, bei mehr als 2 bekomme ich das nciht mehr hin!
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

#622
Zitat von: Michi240281 am 05 Februar 2015, 13:20:54
Hier mal mein aktueller Code:

Der ist ziemlich unsinnig.

1. Innerhalb einer condition solltest Du niemals ein absolutes movto verwenden
2. Wenn Du Dich innerhalb einer conditon mit moveby bewegst, sollte der letzte Befehl innerhalb des condition-Block ein moveby sein, der die ursprüngliche Position wieder herstellt





Zitat von: moonsorrox am 05 Februar 2015, 13:22:04
Ich meinte die Komma's bei moveto und moveby, denn die habe ich nicht...

Da gehören auch keine Komma hin, und in meinem codebeispiel mit Bild sind auch keine Komma mehr drin.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moonsorrox

Zitat von: betateilchen am 05 Februar 2015, 13:31:20
2. sollte der letzte Befehl innerhalb des condition-Block ein moveby sein, der die ursprüngliche Position wieder herstellt
genau das ist der entscheidende Punkt und mein Fehler, den werde ich nicht gemacht haben, deshalb ist der mir immer verrutscht...!  :-\

Zitat von: betateilchen am 05 Februar 2015, 13:31:20
Da gehören auch keine Komma hin, und in meinem codebeispiel mit Bild sind auch keine Komma mehr drin.
gut da bin ich ja beruhigt  ;) werde heute Abend berichten ob ich das hin bekommen habe, muss doch gehen  ;)
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

#624
Zitat von: betateilchen am 05 Februar 2015, 13:31:20

2. Wenn Du Dich innerhalb einer conditon mit moveby bewegst, sollte der letzte Befehl innerhalb des condition-Block ein moveby sein, der die ursprüngliche Position wieder herstellt

Das könnte die Lösung sein! :) Probiere ich heut Abend aus!

Noch ne allgemeine Frage am Rande:

Muss ich nicht jede condition mit "condition 1" "beenden"? Also wenn direkt wieder ne andere condition kommt, kann ich das condition 1 weglassen? Habe das schon mehrfach in posts gesehn!

@Betateilchen: Hast du hierzu evtl. Zeit, dir das anzuschauen?:

Zitat von: Michi240281
Bzgl. der Abfrage, ob der Anruf heute war, gibt es immer noch ein Problem! Gestern wurden die Anrufe von gestern alle einwandfrei angezeigt. Als ich dann um 0:10 Uhr nochmal aufs RSS geschaut habe, waren alle weg. Heute morgen habe ich dann 2 Testanrufe (in Abwesenheit) getätigt, die jetzt wieder nicht angezeigt werden. Irgendwo ist also noch der Wurm drin!

Der Code sieht ja folgendermaßen aus:

condition {(ReadingsVal('my_callmonitor','A0','') eq 'in_notconnected') && ((time_str2num(undef) - tconvert(ReadingsVal('my_callmonitor','B0',''))) <= secondsSinceMidnight())}

Gestern hats funktioniert! Nach 0 Uhr hat der RSS dann keinen Anruf mehr angezeigt. Jetzt werden heute jedoch auch keine neuen Anrufe angezeigt????!?!?!?!?

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

Benni

#625
Zitat von: Michi240281 am 05 Februar 2015, 13:39:12
Muss ich nicht jede condition mit "condition 1" "beenden"?

Nein, musst du natürlich nicht!

Eine condition wirkt immer bis zur nächsten Zeile, die mit "condition" beginnt und ab dort wirkt dann diese condition, wiederum bis zum nächsten "condition".
Ob das was nach "condition" kommt aber überhaupt ausgeführt wird, das entscheidet erst das Ergebnis des Ausdruckes der in der Zeile hinter "condition" steht. Ergibt dieser Ausdruck wahr (also bspw. >0), dann werden diese Anweisungen ausgeführt. Ist das Ergebnis falsch (also bspw. 0) so werden Sie nicht ausgeführt.

condition 1

Sorgt also lediglich, dafür dass alle danach folgenden Anweisungen immer ausgeführt werden, da dieser Ausdruck immer wahr ist.

Conditions können also auch nicht geschachtelt werden.

Gruß Benni.

betateilchen

Auch wenn ich eigentlich keine Lust auf sowas habe...



#Verpasste Anrufe
pt 18
text 400 270 "Verpasste Anrufe"
line 900 240 900 440
line 370 240 370 440

# die Schriftgrößendefinition gehört NICHT in den condition-Block, denn die Schriftgröße soll für alle Ausgaben gelten.
pt 12

moveto 400 275      # NICHT 300!

# 1. Anruf Datum, Zeit, Anrufer, Nummer
condition {(ReadingsVal('my_callmonitor','A0','') eq 'in_notconnected') && ((time_str2num(undef) - tconvert(ReadingsVal('my_callmonitor','B0',''))) <= secondsSinceMidnight())}
moveby 0 25
text 400 y { substr((ReadingsVal('my_callmonitor','B0','')),10,22) } # Datum
text 510 y { substr((ReadingsVal('my_callmonitor','B0','')),0,5). '  Uhr' } # Zeit
text 630 y { ReadingsVal('my_callmonitor','C0','')} # Anrufer
text 780 y { ReadingsVal('my_callmonitor','D0','')} # Nummer
moveto 400 y



Und alle Blöcke für weitere Anrufzeilen sehen genau so aus:


  • beginnen mit condition
  • enden mit moveto 400 y

11. Gebot: Versuche nicht, schlauer zu sein als die Schildkröte!




Zitat von: Michi240281 am 05 Februar 2015, 13:39:12
@Betateilchen: Hast du hierzu evtl. Zeit, dir das anzuschauen?:

Da ist keine Frage der Zeit, sondern eine Frage der Motivation und der zur Verfügung stehenden Testdaten. Beides habe ich nicht. Aber die Ergebnisse der einzelnen Funktionen kannst Du doch auch manuell selbst prüfen. Der Rest ist simple Mathematik. Notfalls mit Taschenrechner.

Aber irgendwie klemmen Deine Ausrufezeichen- und Deine Fragezeichentaste.
-----------------------
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: Michi240281 am 05 Februar 2015, 13:39:12
Habe das schon mehrfach in posts gesehn!

Lesen alleine reicht nicht, Du solltest irgendwann auch anfangen, über das Gelesene nachzudenken.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michi240281

Zitat von: betateilchen am 05 Februar 2015, 14:43:04

Aber die Ergebnisse der einzelnen Funktionen kannst Du doch auch manuell selbst prüfen.

Wenn du mir noch verrätst, wie ich das mache, bin ich glücklich und versuche dann heute Abend das Problem zu lösen.
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

#629
Hallo User, ich möchte gerne diesen Abfallkalender

http://forum.fhem.de/index.php/topic,32382.0/topicseen.html

in RSS einbinden, habe alle Daten schon erneuert, er muss nur noch ins RSS ...