[gelöst] Zugriff auf config-Werte mittels Variable

  • Hallo


    Ist es eigentlich möglich, config-Werte mittels einer Variable abzufragen bzw. zu setzen?


    Beispiel:


    config.plugins.test.wert1
    config.plugins.test.wert2
    config.plugins.test.wert3
    config.plugins.test.wert4


    i = 1
    val = config.plugins.test['wert' + str(i)].value



    Danke schon mal

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ja und in den Plugins und im e2 Python Code findest du auch reichlich Bespiele wie das richtig geht.

  • Danke, das klingt ja schonmal gut. :smiling_face:
    Hatte es gestern versucht und bin irgendwie gescheitert.
    Eine Suche in Plugins bzw. Python-Code hatte mich auch nicht weitergebracht.


    Ich meine aber keine Lösung mit ConfigSubsection() und ConfigSubDict().


    Ich möchte einfach auf einen normalen, bereits bestehenden config-Wert (config.plugins.test.wert3) mit einer Variable zugreifen.


    Ich habe es jetzt nochmal so versucht, aber das klappt so leider nicht:

    Python
    wert3 = config.plugins.test['wert3'].value 
    
    
    => TypeError: 'ConfigSubsection' object has no attribute '__getitem__'


    Könntest du mir vielleicht die korrekte Syntax zeigen oder ein Beispiel-Plugin benennen?


    Danke

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Bitte das xxxx.value="yyy" ist überall, das xxxx.save() um es abzuspeichern auch und das configfile.save() um es ins settings file zu schreiben auch, du willst also nicht ernsthaft das ich dir das abtippe. Wenn arrays von Werten haben willst vie z.B. für ci[0] und ci[1] dann schau mal in das normale CI Plugin im git oder auch mein AutoPin Plugin welches diese erweiter damit es auch für virtuelle Module welche übers MMI angebunden sind funktioniert das CI Menu zu bekommen oder ein CI Assignment durchzuführen.

  • Ich glaube, wir reden aneinander vorbei :smiling_face:
    Ich möchte keine array-Werte speichern.
    Und wie man normal Werte mit .value ausliest und mit .save() speichert ist schon klar.


    ich möchte z.B. folgende funktionierende Code-Zeile zum Auslesen eines E2 Config-Wertes oder anderen fremden Config-Wertes

    Code
    av43 = config.av.policy_43.value


    mit einer Variable in folgender Weise nutzen:


    Code
    conf_var = "policy_43"
    av43 = config.av[conf_var].value

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Einmal editiert, zuletzt von Sven H ()

  • Danke für die Info.
    Da kann ich ja lange probieren :face_with_tongue:


    Ich habe in einer Liste conf[] etwa 10 verschiedene Werte (Texte) für die es auch Config-Werte gibt.


    Nun dachte ich, ich könnte diese Liste einfach mit for each durchlaufen und mit einer Zeile die verschiedenen config-values in einer Liste „einsammeln“.


    Da bleibt mir wohl nichts anderes übrig, als den conf[]-Wert in der Schleife mit if, elif ... zu trennen und die Configwerte dann auf herkömmliche Art abzufragen.


    Code
    for x in conf:
      if x == "wert3":
       wert[3] = config.plugins.test.wert3.value 
      elif x == "wert2":
       wert[2] = config.plugins.test.wert2.value 
    
    
    ...

    Für eigene Configwerte könnte man ja umstellen mit ConfigSubsection() und ConfigSubDict().
    Aber es ging mir ja auch im allgemeinen darum, ob diese andere Variante auch geht, was ja nun verneint wurde :smiling_face:


    Zur Erläuterung meines Gedankens könnte man sich auch folgendes Plugin vorstellen:
    - User gibt per Inputbox einen Text für ein ihn interessierenden config-Wert ein (z.B. "av.policy_43")
    - das Plugin soll jetzt diesen Wert abfragen und ihm den Value per Messagebox mitteilen


    Soll jetzt aber keine Forderung zur Umsetzung sein.
    Dass es so nicht funktioniert, reicht mir schon als Info :smiling_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    2 Mal editiert, zuletzt von Sven H ()

  • Danke für dein Interesse an meiner Frage.
    Aber unschöne Dinge will ich mir erst gar nicht aneignen :face_with_tongue:
    Wobei ich jetzt doch etwas neugierig bin. ☺️

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ah, Danke :smiling_face:
    Das mit exec hatte ich schon irgendwo gefunden in diesem Zusammenhang.
    Aber auf das Gegenstück bin ich dabei nicht gestoßen :face_with_tongue:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • ich wuerde mir die liste mit appends bauen weil da kann man beliebig viele werte anhaengen, aber das handling ist dann trotzdem muehsam wenn du nicht nur lookup machen willst in deiner liste. Das EPGImport hat sich dafuer eine eigene class spendiert um so die quellen Auswahl umzusetzen falls du noch mehr inspiration brauchst.

  • Jetzt aber alles offensichtlich auf MP bezogen?
    Oder gibt es für das obige plumpe Beispiel mit der Inputbox und Ausgabe des fremden Config-Values auch eine andere Lösung?

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Dann würde mich aber noch die andere Lösung für das plumpe Beispiel interessieren :face_with_tongue:


    Also User gibt per Inputbox einen Configwert vor und das Plugin fragt den Value ab und meldet ihn per Messagebox.


    Und das Abfragen des Config-Values anhand des eingegebenen Textes wäre da der interessante Teil ☺️

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Einmal editiert, zuletzt von Sven H ()

  • lies was ich geschrieben habe, nach lookups in listen in python zu suchen dauert 30 sekunden und nochmals solange um die einfachen beispiele zu lesen....