Außenbeleuchtung

Im Heafet ist etwas durcheinander gekommen. Die 2. “%%” sind weg.

–[[
%% properties
80 value
16 value
TOD
%% globals
–]]

Besser?

Bau mal einen Debug nach dem Header für Dein aktuelles ToD ein:
Fibaro:Debug("ToD: "…fibaro:getGlobalValue(„TOD“))

Wozu benötigst du das Fibaro:Abort in den unteren if-Abfragen?

Was hat mit den Block-Szenen nicht funktioniert?

Bau mal einen Debug nach dem Header für Dein aktuelles ToD ein:
Fibaro:Debug("ToD: "…fibaro:getGlobalValue(„TOD“))

Wozu benötigst du das Fibaro:Abort in den unteren if-Abfragen?

Was hat mit den Block-Szenen nicht funktioniert?

Wird aus der State Funktion mit dem “richtige” Wert weitergemacht?
Ich hätte das zur Fehlervermeidung ohne diese Funktion umgesetzt und die Bedingungen in die ifs eingebaut.

Folgende Variable habe ich vor langer Zeit schon mal angelegt für meine Flurbeleuchtung wenn ich Heim komme.

Bis dahin funktioniert es.

Bildschirmfoto-2016-12-27-um-20.11.11.png

die nächste Szene dazu:

Bildschirmfoto-2016-12-27-um-20.14.36.png

Bildschirmfoto-2016-12-27-um-20.15.14.png

Ich habe das Forum schon abgesucht nach einer ähnlichen Szene, aber leider nix gefunden.

Nochmal zum Verständnis was ich mir vorstelle:

Außenbeleuchtung (Dimmermodul) Soll von Sonnenuntergang bis Sonnenaufgang an sein mit einem bestimmten Wert.

Dazu soll wenn der Motionsensor Bewegung erkennt oder die Haustüre geöffnet wird die Außenbeleuchtung auf 100% gehen.

Ich hätte nicht mit SU und SA zusammengearbeitet.

Könntest Du mir evtl. eine Szene schreiben? Wäre echt super!

Es gibt in dem Thread hier doch schon eine fertige Szene, welche genau das macht, was du möchtest. Warum soll hier noch eine neue Szene geschrieben werden?

wenn ich hoggle richtig interpretiere dann passt da ja manches nicht an der Szene? Und diese umzubauen ist für nicht nicht möglich, da ich mich sehr schlecht mit der LUA Logik auskenne.

Ich fasse nochmal zusammen: Ich habe die TOD Szene am laufen. Dazu nehme ich das Skript von nevv.

Wo und wie weis das Skript von Nevv das es das TOD Skript für die Tageszeit nutzen muss?
Wo und wie kann ich dann den zweiten Trigger Türsensor einfügen?
Wie mache ich es das der Dimmwert wieder zurück springt nach einer bestimmten Zeit?

Sorry das ich so viel Schreibe aber als Laie ist es sehr schwer zu verstehen!

Danke! Danke!

Hi,

ich fand die Idee sehr interessant und habe sie für mich umgesetzt und kann Dir die Szene zur Verfügung stellen. Die IDs etc. musst Du aber selbst übernehmen und die Szene ist nahezu ungetestet. Ich habe so viel wie möglich kommentiert, daraus sollte alles hervor gehen.

Und BITTE BITTE, schaue Dir die Szene sehr genau an und versuche zu verstehen was dort wann und warum passiert. Hier sind einige User unterwegs die gern helfen, aber eine fertige Szene ohne Gegenleistung programmieren zu lassen ist wirklich die Ausnahme.

Hier die Szene:

--[[
%% autostart
%% properties
147 value
89 value
%% globals

--]]

--[[ 

* Licht nach Sonnenuntergang auf 10% einschalten
* Bei Bewegung oder Tür auf Licht auf 99% für X Sekunden
* Nur zwischen sunset und sunrise Licht einschalten

** Max. running Instances muss auf 3 stehen!

--]]

---------------------------------------------------
--------- Schleifenschutz -------------------------

if (fibaro:countScenes()>2) then
fibaro:debug('Kill the third scene!');
fibaro:abort();
end

---------------------------------------------------
------------- stime -------------------------------
-- Funktion zum Umrechnen von Uhrzeiten in Sekunden
-- seit 0 Uhr
---------------------------------------------------
function stime(s)
	local pattern = "(%d+):(%d+)"
	local hours, minutes, seconds = string.match(s, pattern)
	return (hours*3600)+(minutes*60)
end

---------------------------------------------------
------------- Config ------------------------------

dimmerID        	= 156 	--Dimmer
motionID			= 147 	--MotionSensor
doorID				= 89	--Türsensor
lightLow        	= 10	--unterer Prozentwert für den Dimmer
lightHigh       	= 99	--oberer Prozentwert für den Dimmer
lightTimer			= 30	--Zeit in Sekunden die das Licht auf lightHigh bleiben soll
offsetSunrise		= 0		--Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset		= 0		--Offset Sonnenuntergang in Minuten (+10 oder -10)
version 			= 'v0.1'

---------------------------------------------------
--------- Farbiges Debug --------------------------
function debug( color, message )
	fibaro:debug(string.format('<%s style="color:%s;">%s<!--%s-->', "span", color, message, "span"));
end

---------------------------------------------------
--------- GetGlobals ------------------------------
function getGlobals()
    sunset				= fibaro:getValue(1, "sunsetHour")
	sunsetSeconds		= stime(sunset)
    sunrise				= fibaro:getValue(1, "sunriseHour")
	sunriseSeconds		= stime(sunrise)
	timeNow				= stime(os.date("%H:%M"))
    sourceTrigger = fibaro:getSourceTrigger();
end

---------------------------------------------------
--------- setLightHighTimer -----------------------
-- (sec) -- Sekunden die das Licht auf 100% bleiben soll
---------------------------------------------------
function setLightHighTimer(sec)
	fibaro:call(dimmerID,"setValue",lightHigh)
	i = 1
	while i  <= sec do
		debug("yellow","Restzeit "..sec-i.." Sekunden")
		i = i + 1
		if fibaro:getValue(motionID, "value") == "1" or fibaro:getValue(doorID, "value") == "1" then
			i = 0
			debug("red","Bewegung dauert an / Tür ist noch offen, setzte Timer zurück")
		end
		 fibaro:sleep(1000)
	end
	debug("yellow","Timer abgelaufen, schalte wieder auf "..lightLow.."%")
	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		fibaro:call(dimmerID,"setValue",lightLow)
	else
		fibaro:call(dimmerID,"setValue",0)
	end
end

---------------------------------------------------
--------- START -----------------------------------

--------- Globale Werte auslesen
getGlobals()

--------- Timerfunktion
function tempFunc()
getGlobals()
if os.date("%H:%M", os.time()+offsetSunset*60) == sunset then 
	debug("green","Sunset erkannt, schalte Licht auf "..lightLow.."% ein")
	fibaro:call(dimmerID,"setValue",lightLow)
elseif os.date("%H:%M", os.time()+offsetSunrise*60) == sunrise then 
	debug("green","Sunrise erkannt, schalte Licht aus")
	fibaro:call(dimmerID,"setValue",0)
else
	debug("green","Sunset "..sunset.." // Sunrise "..sunrise)
end
setTimeout(tempFunc, 60*1000)
end

-- Bei Autostart Timer aktivieren
if sourceTrigger["type"] == "autostart" then
	debug("green","Autostart erkannt, starte Timer")
	tempFunc()
else
	-- Wenn getriggert (Motion oder Door), dann Licht auf lightHigh für x Sekunden
	debug("red","Bewegung oder Tür auf erkannt, schalte Dimmer auf "..lightHigh.."%")
	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		setLightHighTimer(lightTimer)
	end
end

@Bastian

DER WAHNSINN!!! Vielen Vielen Dank! Ich verstehe euch ja das wenn man einmal damit anfängt, jeder kommen würde und eine fertige Szene haben möchten für lau! Ich wäre auch bereit für Szenen zu bezahlen! Ich habe mich schon öfter gefragt warum es so einen Dienst nicht gibt!?

Wäre das nicht möglich in diesem Forum, das unerfahrene User Ihre Wünsche hier einstellen und die Profis diese umsetzen gegen eine Gebühr?

Also mir geht es so, das ich versuche nur das nötigste und wichtigste umzusetzen (was ich mit Blockszenen hinbekomme). Ich finde es immer sehr spannen wenn ein neuer Artikel rauskommt und ich da dran basteln kann. (Da ist auch immer alles super erklärt also Schritt für Schritt).

Nochmal Danke an alle!

@Bastian

Die Szene läuft wie eine 1. Vielen Dank nochmal!!!

Hallo maccwinn,

mein Tipp: Nimm meine Szene, gucke sie Dir genau an und lerne daraus. Sich immer auf andere zu verlassen oder auf neue Artikel zu warten wird weder Dich, noch Dein Haus auf Dauer smarter machen.

Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben.

„Szene gegen Geld“? Was spricht dagegen? Sobald Geld im Spiel ist, erhöht es zwangsläufig die Erwartungshaltung und diese Erwartungen sind teuer.

Hi,

schön, dass es jetzt funktioniert.

Zu dem anderen Thema: Wir sind ein Blog und jeder hier macht das in seiner Freizeit und arbeitet nebenbei. Das eigentliche Problem ist aber das was Bastian bereits sagte. Wenn wir Szenen gegen Geld coden, dann hängt da (wahrscheinlich) noch weitere Arbeit dran. Wer supportet das Skript, was ist wenn es nach einem Update von irgendwas nicht mehr funktioniert? Nur 2 Beispiele. Es gibt sicherlich Firmen, die bieten individuelle Programmierung an, kosten aber auch dementsprechend… Das kann aber niemand hier in einem Forum nebenberuflich leisten.

Gruß

Hallo Boomx

OK von der Seite habe ich es noch garnicht betrachtet (support usw.) hast Recht!. Ich verstehe auch den Ansatz mit dem selbst lernen. Allerdings ist es aus meiner Sicht schwierig, für einen Laien wie mich, wenn man sich mit der LUA Sprache überhaupt nicht auskennt. Ich kann mir die Szene anschauen und durch das übersetzten und ein bisschen Logik kann nich nachvollziehen was und wann die Szene was macht, das wars aber dann auch schon. Die Grundlage ist doch erstmal die LUA Sprache.

Ich müsste irgendwie von grundauf anfangen. Nur wo? Gibts da gute Seiten, wo der Einstig erklärt wird?

Gerne würde ich auch der Community etwas zurückgeben nur ist das natürlich schwierig wenn man nicht programmieren kann :wink:

Aber nochmal, mein Großen Respekt für Leute wie euch!