Ankündigung

Einklappen
Keine Ankündigung bisher.

eval für strings?

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    eval für strings?

    Ein frohes neues Jahr.
    Ich versuche ein Mapping zwischen Zahlen und Texten herzustellen.
    Code:
    0 = keine Regeneration
    1 = Soletank füllen
    2 = Besalzen
    3 = Verdrängen
    4 = Rückspülen
    5 = Auswaschen
    Meine Items sind (einrücken bekomme ich gerade nicht hin, passt aber.):
    Code:
     softliq:
      name: SoftliQ SC18
     
    aktuelleregeneration:
     key: D_Y_5
      type: num
     mqtt_topic_in: softliq/Regenerationsschritt
     
     text:
       name: Aktueller Regenerationsschritt
       type: str
       eval_trigger: softliq.aktuelleregeneration
       eval: keineRegeneration if (sh.softliq.aktuelleregeneration()==0) else Soletankfüllen if (sh.softliq.aktuelleregeneration()==1) else Besalzen if (sh.softliq.aktuelleregeneration()==2) else Verdrängen if (sh.softliq.aktuelleregeneration()==3) else Rückspülen if (sh.softliq.aktuelleregeneration()==4) else Auswaschen
    Das "text" Element ist leider immer leer. Muss ich die in Eval genutzten Strings durch " oder ' Escapen? Wenn ich das mache, meckert er "Eval Syntax Checker" im Backend. Sind die Text so wie aktuell Variablen?
    Zuletzt geändert von Echo; 02.01.2019, 20:26. Grund: Gelöst

    #2
    Schau mal diesen Thread an...

    Du könntest Dir ggf. sogar ein Hilfsitem einrichten, wo Du in einem Dict nur die Mappings von Wert und Text hast und das Du dann im eval abrufst. So bleibt das ganze übersichtlicher.
    Jetzt ohne, das ich das getestet habe:

    Code:
    softliq:
        name: SoftliQ SC18
     
        aktuelleregeneration:
            key: D_Y_5
            type: num
            mqtt_topic_in: softliq/Regenerationsschritt
     
        text:
            name: Aktueller Regenerationsschritt
            type: str
            eval_trigger: softliq.aktuelleregeneration
            eval: sh.softliq.text.lookup()[sh.softliq.aktuelleregeneration()]
    
            lookup:
                type: dict
                initial_value: { 0 : 'keine Regeneration', 1: 'Soletank füllen', 2: 'Besalzen', 3: 'Verdrängen', 4: 'Rückspülen', 5: 'Auswaschen' }
    Zuletzt geändert von bmx; 01.01.2019, 14:42.

    Kommentar


      #3
      Cool Vielen Dank! Probiere ich gleich aus.
      Update: Und es hat funktioniert :-)
      Code:
       eval: (['keine Regeneration','Soletank füllen','Besalzen','Verdrängen','Rückspülen','Auswaschen'][int(value)])
      Zuletzt geändert von Echo; 02.01.2019, 20:26. Grund: Erfolgsmeldung

      Kommentar

      Lädt...
      X