FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: xasher am 28 März 2020, 13:56:14

Titel: classchanger und RegEx
Beitrag von: xasher am 28 März 2020, 13:56:14
Hallo zusammen,

ich habe eine Frage zum Widget Classchanger. Es geht um meinen Bewässerungscomputer. Der hat ein Reading, wo man die nächste Bewässerung sieht.
Das Reading rl4_next hat entweder keinen Wert, wenn keine Bewässerung geplant ist, oder auch den nächsten Wochentag (Sonntag-Samstag) und am Tag der Bewässerung steht die Uhrzeit drin. z.B. 18:30

Ich habe also 4 Zustandsmöglichkeiten (hier relay 4)

rl4_next=""
rl4_next="Freitag"
rl4_next="18:30"

Im Frontend würde ich gerne die Ausgabe der nächsten Ausführung ausblenden, wenn das reading leer ist.
Ich habe folgendes Versucht, scheint aber Probleme zu geben, denn er blendet immer den Text aus:

            <div data-type="classchanger"
              data-device="myHydrawise"
              data-get="rl4_next"
              data-get-on="^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$||^(w)$"
              data-get-off=""
              data-off-class="hide"
              data-on-class="inline">
              <div class="inline" style="color:#0088CC;">Nächste Ausführung:</div>
              <div data-type="label"
                data-device="myHydrawise"
                data-get="rl4_next"
                data-unit=""
                data-color="#0088CC"
                class="inline">
              </div>
            </div>


Funktioniert das überhaupt mit RegEx? Kann aber auch an der Expression liegen - darin bin ich nicht ganz so gut.
Für einen Tipp wäre ich auf jeden Fall mal dankbar.

Grüße,
Alex
Titel: Antw:classchanger und RegEx
Beitrag von: amenomade am 28 März 2020, 14:09:54
Regex sollte an der Stelle funktionieren. Aber Du hast in deiner Regex 2 "capturing groups"
Titel: Antw:classchanger und RegEx
Beitrag von: xasher am 30 März 2020, 08:41:12
Hallo amenomade

ich habe zum einfachen Testen einen next_dummy erstellt.
Der hat aktuell den Wert "18:30"
Ich habe die Klammern nun weggelassen, er zeit trotzdem den Text "Nächste Ausführung: 18:30" nicht an, obwohl der Wert ja gesetzt ist.
Ich bin mir noch nicht schlüssig, ob die Regex richtig ist, bzw. ob man die mit dem oder verknüfpen darf, oder ob ich classchanger falsch verstehe:

                     
<div data-type="classchanger"
    data-device="next_dummy"
    data-get="state"
    data-get-on="^[0-2][0-9]:[0-5][0-9]$||^w$"
    data-get-off=""
    data-off-class="hide"
    data-on-class="inline">
        <div class="inline" style="color:#0088CC;">Nächste Ausführung:</div>
        <div data-type="label"
            data-device="next_dummy"
            data-get="state"
            data-unit=""
            data-color="#0088CC"
            class="inline">
         </div>
</div>


Vielen Dank schon mal.

VG,
Alex
Titel: Antw:classchanger und RegEx
Beitrag von: amenomade am 31 März 2020, 23:59:05
Mach es erstmal simple:

data-get-on="..:.."
Dann sehen wir mal
Titel: Antw:classchanger und RegEx
Beitrag von: xasher am 01 April 2020, 07:07:53
Hallo amenomade,

simple geht:

<div data-type="classchanger"
     data-device="next_dummy"
     data-get="state"
     data-get-on="18:30"
     data-get-off=""
     data-off-class="hide"
     data-on-class="inline">
     <div class="inline" style="color:#0088CC;">Nächste Ausführung dummy:</div>
      <div data-type="label"
           data-device="next_dummy"
           data-get="state"
           data-unit=""
           data-color="#0088CC"
           class="inline">
    </div>
</div>


Grüße,
Alex

Nachtrag: Das mit dem "oder" scheint ein Problem zu sein:
data-get-on="18:30|Samstag"
Da wird dann wieder nichts angezeigt.
Titel: Antw:classchanger und RegEx
Beitrag von: amenomade am 01 April 2020, 20:39:05
Du hast aber mit einem Wert gemacht
data-get-on="18:30"

ich meinte einen Test mit Regex
data-get-on="..:.."
Titel: Antw:classchanger und RegEx
Beitrag von: xasher am 02 April 2020, 07:09:33
Alles klar -verstanden:

<div data-type="classchanger"
     data-device="next_dummy"
     data-get="state"
     data-get-on="..:.."
     data-get-off=""
     data-off-class="hide"
data-on-class="inline">
<div class="inline" style="color:#0088CC;">Nächste Ausführung dummy:</div>
<div data-type="label"
data-device="next_dummy"
data-get="state"
data-unit=""
data-color="#0088CC"
class="inline">
</div>


Es wird mit dieser Einstellung nichts angezeigt.

Grüße,
Alex
Titel: Antw:classchanger und RegEx
Beitrag von: amenomade am 03 April 2020, 01:42:33
Ich verstehe nicht warum.
Aber Du willst ja nur verstecken, wenn das Reading leer ist.
Probier mal mit
data-get-on=".+"
oder
data-get-on="(.+)"
Titel: Antw:classchanger und RegEx
Beitrag von: xasher am 03 April 2020, 09:36:00
Hallo amenomade,

jetzt funktioniert es. Ich muss gestehen, dass ich in dem Bereich längers kein Update mehr gemacht habe bzw. mein Tablet Verzeichnis root zugeordnet habe. Sonst sieht mein Frontend jede Woche anders aus. Heute habe ich nun das Modul classchanger explizit upgedatet. Jetzt funktioniert es in Kombination mit deinem letzten Vorschlag. Ohne Update hat das auch nicht funktioniert. Vielleicht das als Erklärung, warum du es nicht verstanden hast.

Vielen Dank für deine Mühe.

Viele Grüße,
Alex