Ankündigung

Einklappen
Keine Ankündigung bisher.

Eval bei STR (unexpected EOF while parsing)

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

    Eval bei STR (unexpected EOF while parsing)

    Hallo,

    ich möchte für das Sonos-Plugin eine Senderauswahl auf meiner Visu machen. Dafür wollte ich den Wert 1 für Sender 1 und Wert 2 für Sender 2 machen.
    Ich hatte gedacht, diese Lösung zu versuchen:

    Code:
        [[play_tunein]]
                # 'play_tunein' expects a radio station name
                # The name will be searched within TuneIn and the first match is played.
                # To make sure the correct radio station is played provide the full radio station showing in the Sonos app.
                type = str
                enforce_updates = True
                sonos_send = play_tunein
            [[[value]]]
                type = str
                enforce_updates = True
                visu_acl = rw
                value = ndr2
                eval = 'ndr2' if sh.Bad.play_tunein.value.value_set() == 1 else 'ffn' if sh.Bad.play_tunein.value.value_set() == 2
                eval_trigger = value_set
                [[[[value_set]]]]
                    type = num
                    enforce_updates = True
                    visu_acl = rw
                    value = 1
                    sqlite = yes
    Ich bekomme jedoch die Meldung:
    Code:
     
     WARNING  Bad.play_tunein.value Item Bad.play_tunein.value: problem evaluating 'ndr2' if sh.Bad.play_tunein.value.value_set() == 1 else 'ffn' if sh.Bad.play_tunein.value.value_set() == 2: unexpected EOF while parsing (<string>, line 1)
    Welche Lösung würdet ihr stattdessen wählen?

    Gruß und Danke Manuel

    #2
    Es fehlt ein abschliessendes else, also was soll geschehen, wenn value_set weder 1 noch 2 ist?
    Fals nichts geschehen soll, schreibst du hinter die eval-Zeile einfach noch else None
    Falls value_set nie einen anderen Wert haben kann, lässt du das zweite if einfach ganz weg.

    Noch ein Tipp: Das aktuelle item lässt sich mit self ansprechen, du könntest also den Wert einfacher per self.value_set() lesen.

    Und eine Info am Rande: afaik wird das eval auch beim setzen von value beim Init ausgeführt. Es spielt also keine Rolle, ob du value = ndr2 oder value = foo schreibst.

    Kommentar


      #3
      Falls du übrigens vor hast, diverse Sender einzurichten, würde ich folfendes eval versuchen (ich bin aber nicht ganz sicher, ob es funktioniert):
      eval = ['ndr2', 'ffn'][self.value_set() - 1]
      Damit kannst du sehr einfach weitere Sender einfügen.

      Kommentar

      Lädt...
      X