Local Scene ?

Ich habe nun schon einige Szenen in meiner HC2 laufen.
Machmal finde ich die Variable
local scene = 1 – ID dieser Szene
in den Skripten.

Und der Befehl:
fibaro:killScenes(scene);
löscht die laufende Szene mit der Variable dann, wenn sie fertig gelaufen ist, stimmt das so??

Wenn ich das richtig verstehe dann muss ich in der HC2 JEDER Szene eine andere ID geben, oder?

Weitre Frage:

if (fibaro:countScenes()>1) then 
 fibaro:abort(); 

Zählt die Szenen und beendet sie wenn mehr als EINE läuft?
Hier wird die Variable nicht benötigt?
Wird mit dem “abort” befehl nur die aktiv Szene gebrüft und abgebrochen, sofern sie mehrmals läuft oder ALLE Szenen beendet?

Falls meine Fragen irgendwo bereits beantwortet wurden, dann sorry!
Mit der Suche habe ich nichts passendes gefunden.

Falls jemand von euch einen Link zu einem Tutorial für LUA Anfänger in DEUTSCH kennt, bitte um eure Tipps.
Ich tu mir mit englischen Beschreibungen leider schwer…

local scene = 1 – ID dieser Szene
Nein, habe ch so nicht (oft) gesehen.
Das HC vergibt die ID der Szene automatisch. Die steht dan oben in der Adresszeile vom Browser.

if fibaro:countScenes() > 1 then
  fibaro:debug("stop scene");
  fibaro:abort();
end

verhindert das die Szene zu häufig parallel läuft, siehe http://www.siio.de/fibaro-homecenter-und-die-instanzen-einer-szene-das-muesst-ihr-wissen/

Um LUA zu lernen hilft ganz gut, die Szene als Block anzulegen und dann in LUA umzuwandeln.

Danke für den Link, hab mir die Anleitung von Daniel durchgelesen!
Ich gehe davon aus dass der Code

if fibaro:countScenes() > 2 then
  fibaro:debug("stop scene");
  fibaro:abort();
end

Nur die aktuelle Szene prüft und beendet, sofern sie öfter wie 2 x ausgeführt wird?
Oder betrifft das ALLE Szenen, die gerade laufen?

Das mit dem Lua Lernen ist ein toller Tipp, verwende ich eh schon!
Leider komm ich oft drauf, dass die Blockskripte sehr eingeschränkt sind!!

Ich arbeite gerade an einer Szene für einen Türkontakt und will einen Timer aktivieren sobald der Türkontakt irgendeine Auslösung hat, egal ob AUF oder ZU.
Solche Dinge bekomm ich aus dem Blockbild nicht heraus :wink:
Ich suche und finde im Forum eh schon sehr viel. Leider sind mir die meisten angebotenen Skripte (noch) etwas zu kompliziert…

Danke für deine Geduld und dass du mir immer wieder antwortest, auch wenn meine Fragen manchmal etwas Anfängermässig sind :wink:

Hi,

Ich habe auch mit Block angefangen und kupfere auch heute noch LUA ab…
:slight_smile:

Der Code gilt nur für die jeweilige Szene und soll verhindern, dass die Szene nicht mehrfach zeitgleich läuft.
Dadurch beginnt die Szene erst wieder zu laufen, wenn sie zuvor abgeschlossen ist.
Da ein paralleles Laufen der selben Szene nichts bringt, wird durch dessen Unterbindung CPU und ggf Z-Wave-Netzwerk entlastet.

Je nach, was du mit Timer umsetzen willst, wäre hier ein Beispiel:
http://www.siio.de/board/thema/vd-fuer-einen-einfachen-timer/

Oder mittels while-Schleife.

Viele Grüße Hoggle

Andere Timer-Aternative:

Ich überwache meine Gartenpumpe, wenn sie manuell angestellt wurde und lasse sie automatisch nach einer bestimmten Zeit (40 min = 10 * 4) abstellen:

--[[
%% properties
106 value
%% events
%% globals
--]]

--Szeen prüft, ob die Zisternen-Pumpe manuell eingeschaltet wurde und 
--schaltet die Pumpe nach 40 Min automatisch aus. 
--Sofern die Szenen Pumpe An an warmen und heißen Tagen gestartet wurde,
--verhindert die GV Gartenpumpe das automatische ausschalten der Pumpe

local startSource = fibaro:getSourceTrigger();
local Pumpe = 106   	--ID der Zisternen-Pumpe
local Intervall = 10 	--10 Minuten Intervall zur Überprüfung des Statuses
local AUS = 4			-- Anzahl der Intervalle nach dem die Pumpe ausgeschaltet wird

if fibaro:countScenes() > 1 then
  fibaro:debug("stop scene");
  fibaro:abort();
end

fibaro:debug("Status der Zisternen-Pumpe: "..tonumber(fibaro:getValue(Pumpe, "value")))
local counter = 0
DateTime = os.date("%d.%m.%Y %H:%M:%S", os.time())
Date = os.date("%d.%m.%Y", os.time())

if ((tonumber(fibaro:getValue(Pumpe, "value")) > 0 ) and
   (fibaro:getGlobalValue("Gartenpumpe") ~= "An" ))
    --GV Gartenpumpe wird durch Szene Gartenpumpe An an heißen und warmen agen gesetzt
	then
	fibaro:debug(Date.." - Pumpe ist manuell angeschaltet worden")
  	
  	while (tonumber(fibaro:getValue(Pumpe, "value")) > 0) do
 	fibaro:sleep(Intervall*60*1000)  
    counter = counter + 1     
    fibaro:debug("Counter ist: "..counter)
  		if counter >= AUS then 
  			fibaro:debug(Date.." - Counter >= "..AUS.." und Pumpe wird automatisch ausgeschaltet")
      		fibaro:call(Pumpe, "turnOff")
      		fibaro:call(223, "sendPush", "Gartenpumpe nach "..counter*10 .." Minuten ausgeschaltet")
      		counter = 0--break
    	end
  	end
end

if tonumber(fibaro:getValue(Pumpe, "value")) == 0  then
    fibaro:debug(Date.." - Pumpe wurde bzw. ist ausgeschaltet")
  	counter = 0
end

Hi Hoggle,
Mit deiner Pumpensteuerung hast du mich schon wieder infiziert!!
Die werd ich nach meinem Urlaub dafür umbauen meine automatische Außenbeleuchtung auf Zeit zu deaktivieren, wenn wir drausen bei Kerzenlicht sitzen wollen und der automatische Halogen Fluter nicht immer die Stimmung zerstört :wink:

Meine Anforderung mit Timer hat sich übrigens inzwischen erledigt!
Ich wollte immer wenn eine Türe geöffnet oder geschlossen wird, einen Timer verlängern der in diesem Raum das Licht eingeschaltet lässt.
Inzwischen hab ich beschlossen in diesem Raum stattdessen einen Bewegungsmelder zu nehmen! Das Skript hab ich schon einmal wo laufen, das funktioniert präziser :wink:

Schade dass ich jetzt auf Urlaub fahren muss, bin gerade so inspiriert alles zu automatisieren. Meine Frau ist schon ganz nervös was bei meinen Experimenten wieder anders wird als vorher :wink: