Startseite Foren Fibaro Forum (Z-Wave) Fibaro LUA Scripts für HC2 Variablennamen zusammensetzen und Wert der Variable ausgeben

Dieses Thema enthält 7 Antworten und 3 Teilnehmer. Es wurde zuletzt aktualisiert von  Rene2 vor 6 Monate, 1 Woche.

Ansicht von 8 Beiträgen - 1 bis 8 (von insgesamt 8)
  • Autor
    Beiträge
  • #101176

    Iquana
    Teilnehmer

    Hallo an euch,

    irgendwie stehe ich völlig auf der „Gedankenleitung“. Ich möchte eine Funktion aufrufen und in der Funktion den Variablennamen zusammenbauen und dann den Wert der Variable haben. Aber ich komme auf keinen richtigen Weg. Vielleicht hat ja jemand einen Tipp für mich.

    Nachfolgend die Funktion: Es ändert sich „Art“ als String? worauf sich dann zusammengesetzt ein anderer Variablenname ergibt. In diesem Fall muss „SunUpMinuten“ herauskommen und aus dieser Variable der Wert gelesen werden.

    Danke.
    Gruß Peter

    #101190

    Rene2
    Teilnehmer

    Hallo Peter,

    es ist immer hilfreich die Fehlermeldung mit zu posten.
    In Deinem Fall verwendest Du in der Funktion Variablen die nicht gefüllt sind. Du übergibst die Werte Art, Delay und Wert an die Funktion, möchtest aber Sun, Art und Minuten in einer Variable zusammenfügen. Die Variablen Sun und Minuten sind allerdings leer.

    Wenn ich Dich richtig verstanden habe, möchtest Du folgendes ausgeben:
    fibaro:debug("Sun"..Art.."Minuten")

    Grüße
    Rene

    #101208

    Iquana
    Teilnehmer

    Hallo Rene,

    sorry wegen der Fehlermeldung… aber ich habe diverses ausprobiert und hatte die unterschiedlichsten Fehlermeldungen.
    Aktuell bekomme ich keine Fehlermeldung, da ich als Ausgabe den String erhalte. Ich möchte jedoch nicht den String sondern den Inhalt, also den Wert, der Variable „SunUpMinuten“.

    Aktueller Code:

    Mir geht es also um folgende Zeile:
    local WertVar= "Sun" .. Art .. "Minuten"
    hier möchte ich den Wert aus
    local SunUpMinuten=469
    erhalten.

    Die Funktion soll in „Art“ einen String übergeben mit dem ich die Variable aus „WertVar“ unterschiedlich zusammensetzen kann. D.h. „Sun“ und „Minuten“ bleiben immer gleich nur der String aus „Art“ ändert sich. Mir fehlt wahrscheinlich nur die richtige Syntax um das zu erreichen.

    Ich glaube wir hatten uns etwas missverstanden. Schon einmal Danke für deinen Einsatz.

    Gruß
    Peter

    • Diese Antwort wurde geändert vor 6 Monate, 1 Woche von  Iquana. Grund: Schreibfehler korrigiert
    Dateianhänge:
    You must be logged in to view attached files.
    #101223
    Ändy
    Ändy
    Teilnehmer

    Vielleicht hilft das?

    Abfrage Globale:
    value = fibaro:getGlobal('name')

    Ich versteh nur nicht, warum man den Namen derartig zusammensetzen muss. Variablennamen sind in der Regel einmalig und nicht veränderbar. In Deiner Funktion wird außerdem der übergebene Werte „Delay“ und „Wert“ nicht verwendet.


    Grüße, Ändy
    #101225

    Iquana
    Teilnehmer

    Hallo Ändy,

    ja meine Funktion ist noch nicht fertig, daher werden aktuell die Variablen „Delay“ und „Wert“ nicht genutzt.
    Die Funktion getGlobal kenne ich, jedoch führt es nicht zu meinem gewünschten Ergebnis. Zum einen soll es nicht über eine globale Variable gehen und zum anderen hat es folgenden Hintergrund.
    Die Idee dahinter ist eine allgemein gültige Funktion zu schaffen in der nur die notwendigsten Randparameter mitgeteilt werden. Und da die Variablen einer definierten Syntax folgen wollte ich hier nur den veränderlichen String, in diesem Fall „Up“, mitgeben. In der Funktion soll später durch mathematische Operation Grenzwerte berechnet werden und weiter dann geprüft werden ob der Wert innerhalb definierter Grenzwerte liegt. Meine Idee ist gut und sie funktioniert auch bereits in Ansätzen nur hadere ich eben mit dem Zusammensetzen des Strings so das er als Variablennamen genutzt werden kann und mir den Value der zusammengesetzten Variable ausgegeben wird.
    Vielleicht hat ja doch noch jemand eine Idee.

    Gruß
    Peter

    #101231

    Rene2
    Teilnehmer

    Hallo Peter,

    wie rufst Du denn Deine Funktion auf und was übergibst Du in Art,Delay und Wert an die Funktion?

    Grüß
    Rene

    #101252

    Iquana
    Teilnehmer

    Hallo Rene,

    der Aufruf erfolgt wie oben:
    Sun("Up",30,"30")
    Hast du bestimmt übersehen.

    Ich habe jetzt schon einmal probiert das „Up“ durch den ganzen Variablennamen zu ersetzen, dies funktioniert und wäre eine optionale Lösung für mich.
    Trotz alle dem interessiert es mich schon noch, ob es doch eine Lösung für meine Anfrage gibt. Für globale Variablen gibt es ja noch die Möglichkeit von _G doch in so einer Verkettung durch Funktionsaufruf habe ich noch nichts gefunden.
    Die Lösung mit dem vollständigen Variablennamen sieht wie folgt aus:
    Sun(SunUpMinuten,30,"30")

    Gruß
    Peter

    #101256

    Rene2
    Teilnehmer

    Hallo Peter,

    Du hast recht, ich habe es übersehen.
    Dann ist Dein Problem aber klar. Du übergibst die Variable SunUpMinuten nicht an die Funktion.

    Mit Deinem Funktionsaufruf SunTime("Up",30,"30") der Funktion function SunTime(Art,Delay,Wert) setzt Du Art auf „Up“, Delay auf 30 und Wert auf „30“. Vom Wert 469 in SunUpMinuten keine Spur. Es müsste, wie Du schon geschrieben hast SunTime(SunUpMinuten, 30, "30") lauten. Wobei ich den Sinn der Deklaration von Wert als String nicht verstehe.

    Grüße
    Rene

Ansicht von 8 Beiträgen - 1 bis 8 (von insgesamt 8)

Du musst angemeldet sein, um auf dieses Thema antworten zu können.