Hallo leute
Und schon wieder eine frage an das forum.
Ich möchte auf meiner terasse das bei sonnenuntergang ein licht an geht und bei sonnenaufgang wieder aus. Wie geht das ?
Lg
Speedy
http://siio.de/board/thema/rollladen-steuerung-sonnenaufgang-untergang/
Anstatt der Rollläden nimmst du deine Lampe
Danke für die schnelle antwort
Ihr seit klasse.
Aber ich als laie bin bestimmt überfordert aber ich werde es ausprobieren und bestimmt euch das eine oder andere mal nerven.
Versprochen
Euch allen einen schönen abend
--[[ %% autostart %% properties %% globals --]] --ES MUSS NOCH EINE VARIABLE light_runs ERSTELLT WERDEN local sourceTrigger = fibaro:getSourceTrigger(); local version = '0.9'; fibaro:debug('Lichtsteuerung erstmalig gestartet (Ver.' .. version .. ')'); function light_time() local version = '0.9'; -- HIER DEINE ID EINFÜGEN: local lightID = 11; local sunriseHour = fibaro:getValue(1,"sunriseHour"); local sunsetHour = fibaro:getValue(1,"sunsetHour"); local currentDate = os.date("*t"); local light_runs = tonumber(fibaro:getGlobalValue("light_runs")); local random = math.random(35); local min = math.floor((random*100)/60); if ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunriseHour)) and light_runs == 0) then fibaro:debug('Lichtsteuerung gestartet (Ver.' .. version .. ')'); fibaro:setGlobal("light_runs", "1"); fibaro:debug('Sonnenaufgang. Schalte Licht aus'); fibaro:debug('Warte ' .. min .. ' min'); fibaro:sleep(random*100000); fibaro:call(lightID, 'turnOff'); fibaro:debug('Licht ausgeschaltet'); fibaro:setGlobal("light_runs", "0"); elseif ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunsetHour)) and light_runs == 0) then fibaro:debug('Lichtsteuerung gestartet (Ver.' .. version .. ')'); fibaro:setGlobal("light_runs", "1"); fibaro:debug('Sonnenuntergang... Schalte Licht an'); fibaro:debug('Waiting ' .. min .. ' min'); fibaro:sleep(random*100000); fibaro:call(lightID, 'turnOn'); fibaro:debug('Licht angeschaltet'); fibaro:setGlobal("light_runs", "0"); end setTimeout(light_time, 60*1000); end if (sourceTrigger["type"] == "autostart") then light_time(); end
Mir war grad ein wenig langweilig
Hi boomx,
Was passiert genau in Zeile 22 und 23?
Steht die “35” für Minuten?
Ab Zeitpunkt x passiert im zufälligem künftigen Zeitraum etwas?
Ließe sich die Aktion auch als Zeitraum vor bzw nach dem Ereignis berechnen?
Also in den Zeitraum -15 bis +15 Minuten zufällig zum Sonnenuntergang?
VG Hoggle
Hi,
er generiert eine “zufällige Zahl” zwischen 1 und 35. Diese wird mit 100 multipliziert und durch 60 geteilt. Raus kommt eine Zahl zwischen 1 und 58. Diese Zeit wird dann gewartet bis er den Aktor schaltet. Klar, das geht. Du musst nur die Sonnenuntergangszeit minus 15 min und aus der 35 eine 18 machen.
Gruß
Siper.
Danke!
Das ist dann ein schönes Beispiel für eine echte zufallsgesteuerte Licht-Abwesenheitssimulation!
Danke leute ihr seit klasse wirklich, ich hoffe das ich das hinbekomme. Aber ich weiß ja wo ich hilfe bekomme.
Gruß speedy
Ich habe die Szene manuell am Start.
Die ID des Lichtes ist auch richtig und funktioniert auch in anderen Szenen.
Im Ereignis Protokoll wird das Schalten der Lampe nicht angezeigt.
folgendes Debug
[DEBUG] 19:24:43: Lichtsteuerung erstmalig gestartet (Ver.0.9)
[DEBUG] 07:40:48: Lichtsteuerung gestartet (Ver.0.9)
[DEBUG] 07:40:48: Sonnenaufgang. Schalte Licht aus
[DEBUG] 07:40:48: Warte 25 min
[DEBUG] 08:05:48: Licht ausgeschaltet
am Code nichts verändert nur die ID eingefügt.
Die Lampe müsste doch Täglich nachts eingeschaltet werden.
–[[
%% autostart
%% properties
%% globals
–]]
–ES MUSS NOCH EINE VARIABLE light_runs ERSTELLT WERDEN
local sourceTrigger = fibaro:getSourceTrigger();
local version = ‘0.9’;
fibaro:debug(‘Lichtsteuerung erstmalig gestartet (Ver.’ … version … ‘)’);
function light_time()
local version = ‘0.9’;
– HIER DEINE ID EINFÜGEN:
local lightID = 11;
local sunriseHour = fibaro:getValue(1,“sunriseHour”);
local sunsetHour = fibaro:getValue(1,“sunsetHour”);
local currentDate = os.date("t");
local light_runs = tonumber(fibaro:getGlobalValue(“light_runs”));
local random = math.random(35);
local min = math.floor((random100)/60);
if ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) … “:” … string.format("%02d", currentDate.min) == sunriseHour)) and light_runs == 0)
then
fibaro:debug(‘Lichtsteuerung gestartet (Ver.’ … version … ‘)’);
fibaro:setGlobal(“light_runs”, “1”);
fibaro:debug(‘Sonnenaufgang. Schalte Licht aus’);
fibaro:debug(‘Warte ’ … min … ’ min’);
fibaro:sleep(random100000);
fibaro:call(lightID, ‘turnOff’);
fibaro:debug(‘Licht ausgeschaltet’);
fibaro:setGlobal(“light_runs”, “0”);
elseif ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) … “:” … string.format("%02d", currentDate.min) == sunsetHour)) and light_runs == 0)
then
fibaro:debug(‘Lichtsteuerung gestartet (Ver.’ … version … ‘)’);
fibaro:setGlobal(“light_runs”, “1”);
fibaro:debug(‘Sonnenuntergang… Schalte Licht an’);
fibaro:debug(‘Waiting ’ … min … ’ min’);
fibaro:sleep(random100000);
fibaro:call(lightID, ‘turnOn’);
fibaro:debug(‘Licht angeschaltet’);
fibaro:setGlobal(“light_runs”, “0”);
end
setTimeout(light_time, 60*1000);
end
if (sourceTrigger[“type”] == “autostart”) then
light_time();
end
Hi,
der Debug sieht gut aus.
Die ID ist bei dir die 11. Ist die korrekt? Hast du die Option gesetzt, dass Ereignisse der Lampe im Ereignislog erscheinen?
Gruß
Hi,
hast Du das Script gestern das erst mal ab 19:24 Uhr (see debug) am Start oder schon seit Tagen?
Weil bei mir ist Sonnenuntergang signifikant früher und das Script schaltet nur exakt zum SU das Licht an.
VG Hoggle
Da hat Hoggle Recht… Auf die Zeit hatte ich nicht geachtet…
Das Script läuft seit zwei Tagen. Heute kam kein Deburg.
Wenn es gestartet wurde läuft das doch durch?
Ja die das Modul 11 wird aufgezeichnet, ich habe noch eine manuelle Szene wo es läuft.
Ich werde das morgen nochmal neu Starten und mit einem Modul was sonst nirgendwo drin ist Testen.
Werde dann nochmal berichten.
Wie lange wird das Licht eigentlich eingeschaltet nach Sonnenuntergang?
Wo wird das eingestellt hier?
setTimeout(light_time, 60*1000);
Dann passt der Inhalt der Variablen nicht…
Und das Skript schaltet die Lampe zum Sonnenuntergang an und zum Sonnenaufgang aus. Mehr macht es nicht. Die Zeile, welche du erwähnst, darfst du nicht verändern, sonst funktioniert das Skript nicht mehr.
Gruß
Und du hast oben noch geschrieben “habe die Szene manuell am Start”
- was genau heißt das?
Was hast du auf dem ersten Reiter der Szene eingestellt?
Automatik ist eingestellt.
Vielleicht hat ein Alarm die Szene unterbrochen.
Auf der ersten Seite steht bei mir Automatik. Ich dachte das wird über steuert wenn im Header steht.
–[[
%% autostart
%% properties
%% globals
–]]
Ich habe aber jetzt das Problem erkannt. Es war der Haken Szene ausführen trotz Alarm.
Ich bin einen Morgen in einen Alarm reingelaufen und habe die Szene abgeschaltet.
Vielen Dank für eure Mühe , Ihr seid ein tolles Team.