VM Slider - Value abfragen

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 :slight_smile:

Dann hab ich nichts gesagt :wink:

Ich muss das Thema nochmal nach oben holen :slight_smile:
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!