Renderer der Bilder nur an bestimmten Tagen/Zeiten anzeigt

  • Hallo,


    der Thread wo es um die Plugin-Programmierung geht, hat mich daran erinnert, dass ich immer einen Renderer gesucht habe, der ein Bild nur an bestimmten Tagen (oder vielleicht auch Uhrzeiten anzeigt), also so ähnlich:


    Code
    <widget source="global.CurrentTime" render="Pixmap" position="100,100" size="50,50" zPosition="2" pixmap="mySkin/images/xmastree.svg" >
    <convert type="ConditionalShowHide">1/12-31/12</convert>
    </widget>

    Hier würde z. B. nur im Dezember ein bestimmtes Bild angezeigt werden.


    Vielleicht gibt es sowas bereits oder jemand sieht darin eine Möglichkeit, seine Programmierkenntnisse zu erproben. :smiling_face:

  • Versuch es mal damit :winking_face:
    Hab ich mal auf die Schnelle gebastelt.


    Die zu übergebenden Datumswerte (inkl. Uhrzeit) sind Unixtimestamps.
    Die passenden Werte kann man sich z.B. hier umrechnen: https://www.confirado.de/tools/timestamp-umrechner.html
    Die Zahlen im Beispiel-Code entsprechen bereits 01.12.2018, 00:00 Uhr bis 31.12.2018, 23:59 Uhr :winking_face:

    Code
    <widget source="global.CurrentTime" render="Pixmap" position="100,100" size="50,50" zPosition="2" pixmap="mySkin/images/xmastree.svg" >
       <convert type="DateRange">1543618800,1546297199</convert>
       <convert type="ConditionalShowHide" />
    </widget>

    Den Converter "DateRange.py" aus der Zip hierher kopieren:
    /usr/lib/enigma2/python/Components/Converter/


    Edit:
    - aktueller Download im Post #9

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    2 Mal editiert, zuletzt von Sven H ()

  • Erstmal vielen Dank für die Mühe die du dir gemacht hast, aber es scheint nicht zu funktionieren. Wenn ich beispielsweise folgendes in meinem Skin eingebe:


    Code
    <widget source="global.CurrentTime" render="Pixmap" position="100,100" size="100,100" zPosition="0" pixmap="mySkin/images/dreambox.svg" >
       <convert type="DateRange">1545346799,1545519599</convert>
       <convert type="ConditionalShowHide" />
    </widget>

    dann wird die Grafik trotzdem angezeigt (die Unixtimestamps sind für morgen und übermorgen und habe ich mit der von dir angegebenen Webseite ermittelt).

  • Oh, ich hatte vorhin nur mal als Ende den 15.12. genommen, da kam die Grafik nicht :winking_face:


    Da muss ich nochmal schauen, wo es klemmt.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Versuche es bitte nochmal mit dieser Version :winking_face:
    Da war tatsächlicher ein Fehler drin. :upside_down_face:


    Edit:
    - aktueller Download im Post #9

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Einmal editiert, zuletzt von Sven H ()

  • Der DateRange Converter hat jetzt ein Jahr so problemlos funktioniert, das ich ihn schon vergessen hatte, und dann erstaunt war, dass meine Dreambox mir plötzlich in der Infobar zum Geburtstag gratuliert hat :smiling_face:


    Jetzt habe ich die Zeitangaben in meinem Skin an das Jahr 2020 angepasst und wollte fragen, ob es möglich wäre den Converter so zu ändern das textuelle Zeitangaben mit Metazeichen möglich sind, in etwa wie folgt:


    Die Bilddatei wird nur vom 1. bis zum 10. Januar 2020 angezeigt werden:

    Code
    <widget source="global.CurrentTime" render="Pixmap" position="50,50" size="100,100" pixmap="mySkin/test.png">
       <convert type="DateRange">"01/01/2020","10/01/2020"</convert>
       <convert type="ConditionalShowHide" />
    </widget>

    Die Bilddatei wird vom 1. bis zum 10. Januar eines beliebigen Jahres angezeigt:

    Code
    <widget source="global.CurrentTime" render="Pixmap" position="50,50" size="100,100" pixmap="mySkin/test.png">
       <convert type="DateRange">"01/01/*","10/01/*"</convert>
       <convert type="ConditionalShowHide" />
    </widget>

    Die Bilddatei wird am 1. Tag eines beliebigen Monats und Jahres angezeigt:

    Code
    <widget source="global.CurrentTime" render="Pixmap" position="50,50" size="100,100" pixmap="mySkin/test.png">
       <convert type="DateRange">"01/*/*","01/*/*"</convert>
       <convert type="ConditionalShowHide" />
    </widget>
  • Carbonide


    Hab den Converter mal so wie gewünscht geändert - bitte mal testen :winking_face:


    Man kann jetzt die Zeiträume somit auch als lesbaren Text in der Form "Tag/Monat/Jahr" eingeben.

    Es kann optional auch Stunde "Tag/Monat/Jahr/Stunde" oder Stunde und Minute "Tag/Monat/Jahr/Stunde/Minute" angegeben werden.

    Alle Werte kann man dabei wie gewünscht durch ein "*" ersetzen, so dass die Zeitangabe für variable Zeiträume verwendet werden kann, wie "01/01/*" für den 01.01. jeden Jahres.


    Das wäre dann der grundsätzliche Syntax gemäß deinem obigen Beispiel:

    Code
    <widget source="global.CurrentTime" render="Pixmap" position="50,50" size="100,100" pixmap="mySkin/test.png">
       <convert type="DateRange">"01/01/2020","10/01/2020"</convert>
       <convert type="ConditionalShowHide" />
    </Widget>

    Die Verwendung von Timestamps (wie bisher) sollte dabei weiterhin funktionieren.


    Edit:
    - aktueller Download im Post #13 (mit der Möglichkeit auch die Sekunden angeben zu können)

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Einmal editiert, zuletzt von Sven H ()

  • Sven, du warst so weitsichtig sogar die Uhrzeit optional als Parameter mit einzubauen und da kam mir jetzt der Gedanke dass man damit einfache Animationen realisieren kann. Deshalb habe ich jetzt testweise mal das Folgende probiert:


    Code
    <widget source="global.CurrentTime" render="Pixmap" position="50,50" size="20,20" pixmap="mySkin/test.png" >
      <convert type="DateRange">"*/*/*/*/00","*/*/*/*/30"</convert>
      <convert type="ConditionalShowHide" />
    </widget>

    Damit müsste doch die Grafik jeweils immer nur in der ersten Halbminute angezeigt werden, aber das funktioniert nicht. Habe ich etwas übersehen?


    Edit: doch, doch, es funktioniert, ich habe Minuten mit Sekunden verwechselt :smiling_face: Könntest du auch noch Sekundenabfrage einbauen?

  • Man kann ja nur Tag/Monat/Jahr/Stunde/Minute angeben.


    Dein Bespiel "*/*/*/*/00", "*/*/*/*/30" wäre dann immer die erste halbe Stunde.
    Also von Minute 0 bis 30.


    An Animationen hatte ich dabei nicht gedacht, weshalb ich die Sekunden da auch nicht als Parameter verarbeitet habe.


    Hinweis:
    Bei der Ende-Zeit wird dann immer die volle Stunde bzw. volle Minute genutzt.
    Wenn keine Minute angegeben, dann wird immer 59 verwendet. Auch werden immer 59 sek gesetzt.


    Beispiel:
    Bei Ende = 23/12/2019/20 wird 20:59:59 verwendet.
    Bei Ende = 23/12/2019/20/15 wird 20:15:59 verwendet.


    Edit:

    Ich schau mir das nochmal mit den Sekunden an :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • z.B. um zu bestimmten Tagen/Zeiträumen (Geburtstag, Ostern, Weihnachten) bestimmte Grafiken irgendwo im Skin zu platzieren, ohne dass man das dann jedes mal händisch anpassen muss :winking_face:


    Für die Sache mit Stunden/Minuten/Sekunden hätte ich jetzt auch nicht direkt eine Verwendung.

    Zu den Stunden könnte man evtl. im Idle-Display z.B. Sonne und Mond je nach Zeit anzeigen lassen :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ok, da kannst der Frau in der Infobar zu allen "wichtigen" Tagen automatisch gratulieren.

    Dann kannst im Notfall immer noch sagen das du doch daran gedacht hast.:winking_face_with_tongue::smiling_face_with_halo:

    >> Wir Schweizer haben die Uhren, aber keine Zeit ! <<

  • Sven H, hast du rendern animationmit dem Konverter arbeiten ConditionalShowHide?

    Ich glaube das hast du falsch verstanden, der Converter ist nicht für Animationen gedacht! Ich habe ihn sozusagen dazu missbraucht (z. B. einfach blinkender Weihnachtsbaum). Das wird sehr schnell sehr unübersichtlich gross. Für eine Minute im 2 Sekundentakt blinkendes Licht benötigt man z. B. 62 Zeilen XML Code.