Ich bin leicht verwirrt!
Folgende Situation:
In einer Szene:
wert = tonumber(hub.getGlobalVariable(„Variable“)) → funktioniert!
in einer QuickApp:
wert = tonumber(hub.getGlobalVariable(„Variable“)) → Fehler
aber:
test = hub.getGlobalVariable(„Variable“) → funktioniert!
wert = tonumber(test)
und es gibt auch noch mehrere Dinge die in QuickApps anders funktionieren…
Hat da jemand eine Erklärung?
Danke,
Klaus
MonsTec
2
Der Unterschied im Verhalten zwischen Szenen und QuickApps könnte an der Art der zurückgegebenen Daten durch hub.getGlobalVariable("Variable")
liegen.
1. Unterschiedliche Rückgabewerte (String vs. Zahl)
In einer Szene:
wert = tonumber(hub.getGlobalVariable("Variable")) -- Funktioniert
Hier scheint hub.getGlobalVariable("Variable")
direkt eine String-Repräsentation einer Zahl zurückzugeben, die tonumber()
problemlos umwandeln kann.
In einer QuickApp:
wert = tonumber(hub.getGlobalVariable("Variable")) -- Fehler!
Hier könnte hub.getGlobalVariable("Variable")
ein anderes Datenformat zurückgeben (z. B. ein JSON-Objekt oder nil
).
Workaround, der funktioniert:
test = hub.getGlobalVariable("Variable") -- Funktioniert
wert = tonumber(test) -- Funktioniert
Das zeigt, dass die Variable erst als separate Variable gespeichert werden muss, bevor tonumber()
funktioniert.
2. Warum passiert das?
In QuickApps könnte hub.getGlobalVariable()
ein anderes Datenformat zurückliefern als in Szenen:
- In einer Szene wird möglicherweise ein einfacher String-Wert zurückgegeben.
- In einer QuickApp könnte es ein komplexeres Objekt sein, das erst explizit in einen String umgewandelt werden muss.
Lösung: Vor der Konvertierung in tonumber()
, prüfe den Datentyp:
test = hub.getGlobalVariable("Variable")
print(type(test)) -- Gibt den Datentyp aus (string, number, table, etc.)
wert = tonumber(test)
Falls type(test) == "table"
ausgegeben wird, ist die Rückgabe kein einfacher String, sondern ein Objekt, das du weiter verarbeiten musst.
3. Weitere Unterschiede zwischen Szenen und QuickApps
- Szenen laufen in einer anderen Umgebung (möglicherweise Lua 5.1 vs. Lua 5.3).
- QuickApps haben mehr Einschränkungen, da sie im Gerät ausgeführt werden.
- Manche Funktionen in Szenen haben ein anderes Verhalten in QuickApps.