Szenario Sonnenaufgang/Sonnenuntergang

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

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

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

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((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(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(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

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.