VD Verbrauch - Fehler bei Variablen

Hi Leute,
Ich bau mir gerade ein VD welches von unterschiedlichen Plugs den Verbrauch über eine gewisse Zeit als Nachricht verschickt.
Leider hab ich ein Problem die Variablen mit den Werten aus dem entsprechenden Modul zu befüllen!
Habe derzeit folgenden Code der funktioniert:

local plugname = fibaro:getGlobalValue("Vid") 
fibaro:debug("Name "..plugname)

std = 6
sek = math.floor(std*3600) 
StartEnergiemessung = (os.time()-sek)
EndEnergiemessung = os.time()
jsonListe = api.get("/energy/"..StartEnergiemessung.."/"..EndEnergiemessung.."/compare/devices/power/"..plugname)
fibaro:setGlobal("Vwert", jsonListe[1].kWh)
fibaro:debug("Verbrauch der letzten " ..std.." Std: "..jsonListe[1].kWh.. " kWh")

Sobald ich weitere Werte des Plugs mit der Variable Plugname abfragen will kommt ein Fehler (siehe Anhang)
Siehe Code:

local plugname = fibaro:getGlobalValue("Vid") 
fibaro:debug("Name "..plugname)
local sensorname = fibaro:getName(plugname)
fibaro:debug("Sensor "..sensorname)
local sensorroom = fibaro:getRoomNameByDeviceID(plugname)

std = 6
sek = math.floor(std*3600) 
StartEnergiemessung = (os.time()-sek)
EndEnergiemessung = os.time()
jsonListe = api.get("/energy/"..StartEnergiemessung.."/"..EndEnergiemessung.."/compare/devices/power/"..plugname)
fibaro:setGlobal("Vwert", jsonListe[1].kWh)
fibaro:debug("Verbrauch der letzten " ..std.." Std: "..jsonListe[1].kWh.. " kWh")
fibaro:setGlobal('PushOver',"Stromverbrauch,"..jsonListe[1].kWh.." kWh in "..std.." Stunden,0,none")
-- fibaro:setGlobal('PushOver',"Verbrauch von: "..sensorname.."im Raum: "..sensorroom..","..jsonListe[1].kWh.." kWh in "..std.." Stunden,0,none")

Habt ihr eventuell einen Tipp was ich falsch mache???

2017-04-23-20_55_56-Home-Center-2.jpg

Hi,

Ist “vid” ein ein Wert oder ein Array oder eine vordefinierte Var?

Viele Grüße Hoggle

Hi Hoggle,
Danke dass du mir hierbei hilfst!

“Vid” ist eine globale Variable, die ich mit einem Knopf in dem Virtuellen Device befülle bevor mein Skript läuft.
fibaro:setGlobal(“Vid”, 256)

Der Gedanke ist zuerst im VD den richtigen Plug auswählen, damit globale Variablen zu setzen und danach den Zeitraum auszuwählen der ausgelesen werden soll.
Meine VD sieht aus wie in dem Screeenshort unten.
Vielleicht denke ich auch zu kompliziert und das kann viel einfacher gehen :wink:

Im Screenshot oben habe ich einen erfolgreichen Debug drinnen, der mir zeigt, dass die Übergabe der globalen Variable in die variable “plugname” funktioniert hat.
Zumindest ist dort danach der Wert “256” drinnen und das obere Skript funktioniert damit!

Sobald ich aber mit diesem Wert “256” weiterarbeiten möchte um “Sensorname” und “Sensorroom” von “256” herauszufinden, gibt es die Fehlermeldung im Screenshot!

Ich kann gerne das VD komplett posten, wenn es nötig ist…

VD-Verbrauch.jpg

Hast du es mal mit tonumber versucht?
Also
local plugname = tonumber(fibaro:getGlobalValue("Vid"))

Du bist super, das wars!!
Das bedeutet die globalen Variablen sind immer “text” und müssen erst umgewandelt werden, sofern sie Zahlenwerte repräsentieren sollen…
Das wußte ich (noch) nicht :wink: