Hi,
Ich habe mit von hier ein Virtuelles Device runtergeladen und es angepasst um 4 unterschiedliche Zeiten zu timen.
Nun funktioniert mein Timer schon recht gut, aber ich bekomme folgendes (noch) nicht hin:
1.) Die Pushnachricht im Teil “TimerStart” wird nicht gesendet. Es werden aber auch keine Debug Medlungen ausgegeben, somit vermute ich dass der Teil garnicht angesprungen wird!?
2.) Wäre es perfekt, wenn nicht nur die Sekunden runtergezählt würden, sondern Minuten und Sekunden getrennt.
Habe das virtuelle Modil drangehängt (bitte Dateiendung von .txt auf .vfib ändern!)
Hat jemand einen Tipp für mich?
Hier mal der Code des Timers in dem VDevice:
local selfId = fibaro:getSelfId()
local timer = tonumber(fibaro:getValue(selfId, "ui.sTime.value"))
local runningTimer = tonumber(fibaro:getValue(selfId, "ui.rTime.value"))
fibaro:debug(timer)
fibaro:debug(runningTimer)
if runningTimer == 0 or runningTimer == nil then
fibaro:call(250, "turnOn")
while timer > 0 do
timer = timer - 1
fibaro:call(selfId, 'setProperty', 'ui.rTime.value', timer)
fibaro:debug(timer)
fibaro:sleep(1000)
timer = tonumber(fibaro:getValue(selfId, "ui.rTime.value"))
fibaro:debug("Timer läuft", timer)
end
fibaro:call(250, "turnOff")
fibaro:debug("Timer ausgeschaltet")
fibaro:setGlobal("PushOver","Silber Timer, Silber Produktion beendet",0,siren)
else
fibaro:debug('anderer Timer läuft noch')
end
Das mit der Push Nachricht habe ich inzwischen hinbekommen.
Jetzt fehlt mir nur noch die Aufteilung der “Remaining Time” in Minuten und Sekunden.
Derzeit habe ich die Idee zwei getrennte Zähler laufen zu lassen. EINEN für die Anzeige und EINEN für die Anzeige.
Das geht aber sicher auch einfacher!?
Gibt es irgend ein Timer Skript wo ich mir das abschauen kann?
Hallo nochmal,
Ich möchte gerne meinen Timer etwas verändern um folgendes zu erreichen:
Habe einen Bewegungsmelder auf der Terasse, der in der Nacht 400W Halogenlicht aufdreht, wenn jemand die Terasse betritt.
Nun will ich mit einem VD diese Beleuchtung abschalten können, wenn ich draussen bei Kerzenlicht sitze.
Habe die Idee ein VD zu bauen, das Tasten für 1h, 3h, 6h besitzt, und das automatische Licht so lange deaktiviert!
Die Oberfläche habe ich schon fertig, nur die Zeitsteuerung klappt noch nicht.
hast Du es mal mit einer globalen Var versucht?
Diese GV wird durch Deine Buttons gesetzt und mit sleep nach der Zeit des Buttons wieder zurückgesetzt.
SetTimeout geht wohl nicht im VD.
Die GV müsstest Du dann in Dein Licht-An-Script berücksichtigen.
Hab das jetzt mal ausprobiert, komme aber nicht weiter ;-(
Habe globale Variable “TerasseTimer” angelegt und versuche diese in den Speicher “sTime” des VD zu bekommen
Hier der Code eines Knopfes für 2 Minuten
local selfId = fibaro:getSelfId()
fibaro:setGlobal("TerasseTimer", 2)
fibaro:call(selfId, 'setProperty', 'ui.sTime.value', TerasseTimer)
WAS genau macht diese SelfID ?
Brauch ich das überhaupt noch?
SelfID holt sich die ID des VDs und setzt diese dann automatisch.
Also siehe Zeile 1 und dann Zeile 3.
Die drei Zeilen verstehe ich nicht.
Dort ist die Variable “TerasseTimer” nicht definiert…
Wozu musst Du „TerasseTimer“ in den Speicher „sTime“ des VD bekommen?
Der Plan ist folgender:
Ich habe 4 Tasten mit 15Min, 60Min, 180Min und 300Min.
Ich will beim Druck auf diese Tasten einen FibaroPlug für die angegebene Zeit ausschalten.
Danach soll er wieder aktiviert werden und eine PushNachricht soll verschickt werden!
Zusätzlich hab ich einen “stop” taste geplant, die den Timer vorzeitig stoppt und den Plug sofort wieder einschaltet.
Ziel:
Ich habe ein Bewegungslicht auf der Terasse das über einen Fibaro plug mit Strom versorgt wird.
den ich ab und zu für die oben genannte Zeit ausschalten möchte, wenn ich zum Beispiel bei Kerzenlicht draussen sitze und nicht will dass dauernd das Licht angeht…
Ich dachte ein Virtuelles Device ist dafür geeignet, vielleicht hab ich ja einen Denkfehler …
Das einzige Problem hab ich noch mit der STOP Funktion!!
Wenn ich damit das VD stoppe, dann funktioniert das zwar, das Device läßt es sich danach aber nicht mehr bedienen!!
Hast du vielleicht einen Tipp??
dazu müsste ich zu tief in Dein VD einsteigen.
Ich würde die Labelanzeige nicht als Variable bezeichnen.
Für mich sind das Anzeigen. Aber ihc bin kein Programmiere…
Die lassen sich schon übergreifend abfragen.
Ich würde die GV TerasseTimer einfach in dem Start-Button des eigentlichen VDs abfragen.
ggf im Stop-Button wieder auf 0 setzen.
Was ich meinte ist ein VD bzw. Buttons wie folgt (ob verschieden Zeiten oder ein Status ist ja egal):
und im Button:
--wenn GV auf "1", dann lässt das Script
--die HUes im Flur EG blinken
fibaro:setGlobal("Blinken_Flur", "1")
local selfId = fibaro:getSelfId()
fibaro:call(selfId, 'setProperty', 'ui.Label1.value', "Aktiviert")
Diese GV frage ich laufend im betreffendem Script (oder VD) ab (Bestandteil vom while bzw if)
Das bedeutet, wenn ich es richtig verstehe, dass die Labelanzeige ‘ui.Label1.value’ gar keine Variable ist!
In deinem Beispiel holst du dir also nur die Anzeige des Labels in eine Variable und dann kannst du es verändern.
Dadurch wird aber nur die Anzeige im Label, aber keine Variable verändert, soweit richtig ?
Wenn das so stimmt werde ich mal einen anderen Ansatz probieren:
Ich setze nur die globale Variable im VD und rufe von dort danach nur mehr eine LUA Skript auf welches gleich ALLES abdeckt!
Mal sehen ob das dann klappt…