classchanger und RegEx

Begonnen von xasher, 28 März 2020, 13:56:14

Vorheriges Thema - Nächstes Thema

xasher

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

amenomade

Regex sollte an der Stelle funktionieren. Aber Du hast in deiner Regex 2 "capturing groups"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

xasher

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

amenomade

Mach es erstmal simple:

data-get-on="..:.."
Dann sehen wir mal
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

xasher

#4
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.

amenomade

Du hast aber mit einem Wert gemacht
data-get-on="18:30"

ich meinte einen Test mit Regex
data-get-on="..:.."
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

xasher

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

amenomade

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="(.+)"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

xasher

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