Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler mit eval und dict Zugriff

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

    Fehler mit eval und dict Zugriff

    Hi

    Ich habe aus der Anleitung, Beispiele, Tipps & Tricks, dieses eval Konstrukt übernommen, natürlich nicht 1:1.

    Code:
    aktuelleregeneration:
        name: Aktueller Regenerationsschritt als num
        type: num
    
        text:
            name: Aktueller Regenerationsschritt als String
            type: str
            eval: [sh..lookup()][value]
            eval_trigger: ..
    
            lookup:
                type: dict
                initial_value: { 0: 'keine Regeneration', 1: 'Soletank füllen', 2: 'Besalzen', 3: 'Verdrängen', 4: 'Rückspülen', 5: 'Auswaschen' }
    Es geht um das eval/eval_trigger/lookup.

    Bei mir sieht das in den items so aus:

    Code:
    Galerie:
        Raumtemperatur:
            Ist:
                type: num
                knx_dpt: 9
                knx_cache: 3/1/16
                database: yes
                eval: round(value, 1)
            Soll:
                type: num
                knx_dpt: 9
                knx_send: 3/1/20
                knx_cache: 3/1/24
                database: yes
            Ventilposition:
                type: num
                knx_dpt: 5001
                knx_cache: 3/1/4
            Status:
                type: bool
                eval: True if sh.Galerie.Raumtemperatur.Ventilposition() else False
                eval_trigger: Galerie.Raumtemperatur.Ventilposition
                database: yes
            Reglermodus:
                type: num
                knx_dpt: 20
                knx_send: 3/2/29
                eval: [sh.Galerie.Raumtemperatur.Reglermodus.Lookup()][value]
                eval_trigger: Galerie.Raumtemperatur.Reglerstatus
                Lookup:
                    type: dict
                    initial_value: { 1: 1, 2: 2, 4: 3, 8: 4 }
            Reglerstatus:
                type: num
                knx_dpt: 5
                knx_cache: 3/2/27
    Die eval Zeile unter Reglermodus wird nicht angenommen. Beim Speichern kommt folgende Fehlermeldung:

    grafik.png

    Bin grad ratlos, was die Ursache ist. Für mich sieht das genauso aus wie im Beispiel. Ich habe die komplette Zeile schon gelöscht und neu eingetippt, aber es ändert nichts.

    Das System:

    Code:
    SmartHomeNG Version:v1.9.2-master (cc57a0ad)   in   /usr/local/smarthome           (tags/v1.9.2)
    SmartHomeNG Plugins Version:v1.9.2-master (e9f4b869)   in   /usr/local/smarthome/plugins           (heads/master)
    Administrations-Oberfläche:shngAdmin v0.6.0
    Python Version:3.9.2 final           (/usr/bin/python3)
    Betriebssystem:Debian GNU/Linux 11 (bullseye)
    Prozess ID:2446673
    BS Benutzer:smarthome
    Freier Speicher:438,306 MByte
    Hardware:Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz
    Datum / Zeit:16.05.2023 12:06:20 CEST
    Betriebszeit SmartHomeNG:47 Minuten, 42.06 Sekunden
    Betriebszeit Host:453 Tage, 18 Stunden, 47 Minuten, 10 Sekunden​
    Wäre für jede Hilfe dankbar.

    Gruß, Martin
    Zuletzt geändert von Sipple; 16.05.2023, 11:22.

    #2
    Hi,

    hier mal ein Bsp:

    Code:
                luftqualitaetsampel:
                    type: num
                    knx_dpt: 5.001
                    knx_cache: 6/1/27
                    cache: yes
                    
                    text:
                        type: str
                        eval: "['platzhalter', 'sehr gut', 'gut', 'befriedigend', 'mangelhaft', 'genügend', 'ungenügend'][int(sh...())] if sh...() is not None else 'Update ausstehend'"
                        eval_trigger: ..

    Kommentar


      #3
      Der bei eval eingetragene Ausdruck muss ein String sein. Bei Dir werden durch die fehlenden Anführungszeichen die Sonderzeichen (geschweifte Klammen, eckige Klammern, etc.) bereits als Teil des YAML Syntax interpretiert und nicht als Teil des eval Ausdrucks.

      Die Anführungszeichen können nur weggelassen werden, wenn der Ausdruck keine Sonderzechen enthält, die von YAML bereits als Teil des YAML Syntax interpretiert werden.

      Sie auch in der Doku: https://smarthomeng.github.io/smarth...bute/type.html unter SmartHomeNG Datentyp dict.
      Zuletzt geändert von Msinn; 16.05.2023, 12:55.
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #4
        Ok, danke.

        Kommentar

        Lädt...
        X