Hallo zusammen,
gibt es eine Möglichkeit bei einem VM den Wert eines Sliders direkt abzufragen? Oder bleibt einem nur, die Logik, welche den Slider befüllt nachzubauen bzw. Werte in globalen Variablen zu deponieren?
Gruß
Markus
Hallo zusammen,
gibt es eine Möglichkeit bei einem VM den Wert eines Sliders direkt abzufragen? Oder bleibt einem nur, die Logik, welche den Slider befüllt nachzubauen bzw. Werte in globalen Variablen zu deponieren?
Gruß
Markus
Servus Markus!
Ja das geht.
Ich habe mit einem Slider eine Minutenauswahl gebaut, hier frage ich im VD bei einer Änderung des Sliders den Wert ab und setzte ihn ggf. zurück.
Der Slider arbeitet ja mit Werten von 0 … 100.
--[[
Slider für die Minutenauswahl auf 60 (min) begrenzen
--]]
local SelfId = fibaro:getSelfId()
local PositionVomSlider = "2" -- Position des Sliders im Virtuellen Gerät!
if tonumber(fibaro:getValue(SelfId, "ui.sldMin.value")) >= 60 then
fibaro:call(SelfId, "setSlider", PositionVomSlider, "59")
end
In einem Button in der gleichen VD kannst Du z.B. den aktuellen Sliderstatus abfragen:
local MinVorwahl
MinVorwahl = tonumber(fibaro:getValue(SelfId, "ui.sldMin.value")) -- Zeit vom Slider lesen
Globale variablen benötigst Du nur, wenn Du den Sliderwert außerhalb des VD benutzen möchtest.
Danke. Das ist genau was ich brauche. Wenn ich die ID des VM in einer Szene weiß und fest verdrahte, müsste der Aufruf doch auch direkt aus der Szene funktionieren, oder?
Gruß
Markus
Hi,
der Wert des Sliders ist meiner Meinung nach nur über das VD abrufbar. Über eine Szene kann darauf nicht zugegriffen werden. Hier bleibt nur der Weg, welchen Armin schon aufgezeigt hat.
Gruß
Testergebnis: Geht. Man kann die Position auch aus einer Szene abfragen
Dann hab ich nichts gesagt
Ich muss das Thema nochmal nach oben holen
Ich nutze die Slider um Stunden und Minuten einzustellen und alles in eine Glob Variable zu übernehmen.
Leider ist es nun so, dass natürlich die Werte von 0 - 9 einstellig sind und sich somit nicht mit der Minuten Systemzeit von 0 - 9 vergleichen lassen, die im 01 - 09 Format vorliegt.
Weiß jemand eine Möglichkeit der Umwandlung von einer Stelle zu zwei Stellen mit einer führenden Null?
Das geht über Stringformatierung:
Zahlmit2Stellen=string.format("%02d“,Zahl)
Oder Du wandelst deinen 2-stelligen String in eine Zahl und führst damit einen Zahlenvergleich durch:
zahl=tonumber(deinstring)
Vielen Dank Ändy für deinen Hinweis.
Hat jetzt so super funktioniert:
MinVorwahl = tonumber(fibaro:getValue(SelfId, "ui.sldMin.value")) -- Zeit vom Slider lesen
StdVorwahl = tonumber(fibaro:getValue(SelfId, "ui.sldStd.value")) -- Zeit vom Slider lesen
Zeit = StdVorwahl.. ":" ..string.format("%02d",MinVorwahl)
Vielen Dank dafür!