Licht 50% im Zeitfenster, bei Bewegungserkennung durch Präzensmelder Licht 100%

Guten Tag werte Foren Mitglieder,

ich benötige Hilfe für eine Programmierung mit IPS. Folgendes soll umgesetzt werden.

Eine Außenleuchte soll sich Abends mit Beginn des Sonnenuntergangs mit 50% Lichtleistung einschalten und um 23.00 Uhr automatisch wieder ausschalten.

Alle von einem KNX Präzensmelder (222500 von Gira) erfassten Bewegungen im Aussenbereich vom Sonnenuntergang bis Sonnenaufgang sollen das Licht auf 100% einschalten. Je nach „Zeitzone“ soll das eingeschaltete Licht nach 3 Minuten (und keiner Bewegung) wieder ausgeschalt bzw. auf 50% zurück gedimmt werden.

Zeitzone 1 = Sonnenuntergang bis 23.00 Uhr: 50% - 100% - 50% - 100% - 50% usw.
Zeitzone 2 = 23.00 Uhr bis Sonnenaufgang: 0% - 100% - 0% - 100% - 0% usw.

Ich hoffe mein Anliegen verständlich erklärt zu haben und bitte um Eure Hilfe.

Vielen Dank.

Gruß Schulzenman

Installiere mal z.B. Astronomie Modul, dann hast Du auch einen Astro Timer zur Verfügung, dieser schaltet Dir dann das Gerät zur Dämmerung ein.
Dann ein zweites Ereignis anlegen mit Uhrzeit das das Gerät um 23.00 Uhr ausschaltet.

Ein Ereignis auf den Bewegungsmelder setzten und damit ein Skript starten. In dem Skript wird die Variable unter Location Es ist Tag abgefragt. Sollte diese Bedingung false sein dann das Licht eingeschaltet. Habe ich das so richtig verstanden von den Anforderungen?

Hallo Fonzo,

Vielen Dank für die schnelle Antwort.

Nein, ich denke das hast Du falsch interpretiert. Ich versuche es noch einmal einfacher mit einer Zeitzone / Zeitfenster.

Die Außenleuchte soll sich ab Sonnenuntergang (z.Z. ca. 16.40 Uhr) bis einschließlich 23.00 Uhr einschalten mit 50% Lichtleistung. In diesem Zeitfenster übernimmt dann ein in der Nähe befindlicher Bewegungsmelder die Kontrolle und schaltet bei Bewegungserfassung

  1. Die Lampe auf 100% Lichtleistung für 3 Minuten (falls keine weitere Bewegung erfasst wird)
  2. Nach den 3 Minuten wiede zurück auf 50% Lichtleistung

Der Vorgang beginnt von neuem, bei neuer Bewegungserkennung. Sollte keine Bewegung registriert werden, dann schaltet die Lampe um 23.00 Uhr aus (von 50% auf 0%).

Gruß schulzenman

Ich würde das wie folgt lösen, musst Du testen ob das so funktioniert wie Du Dir das wünscht.

Zunächst Anlegen:

[ul]
[li]Variable Type Bool Name z.B. Lichtschaltung Nacht
[/li][li]Skript Lampe aktiv mit enthalten Schaltbefehl für 50 % und setzt die Variable Lichtschaltung Nacht auf true
[/li][li]Skript Lampe deaktiv mit enthalten Schaltbefehl für aus und setzt die Variable Lichtschaltung Nacht auf false
[/li][li]Skript On 50 mit enthalten Schaltbefehl für 50 %
[/li][li]Skript On 100 mit enthaltenen Schaltbefehl für 100%
[/li][li]Skript Umschaltung
[/li][/ul]

Skript Umschaltung


<?
$twilight = GetValue(12345 /*[Lichtschaltung Nacht]*/);
if ($twilight)
{
	if($_IPS['SENDER'] == "TimerEvent")
	{
	    // 50 % setzten
	   // Skript mit Schaltbefehl für 50 % aufrufen
          IPS_RunScript(23456 /*[On 50]*/);
	 
	    //Timer ausschalten
	    IPS_SetScriptTimer($_IPS['SELF'], 0);
	} else {
	    // 100 % setzten
	    // Skript mit Schaltbefehl für 100 % aufrufen
           IPS_RunScript(34567 /*[On 100]*/);

	 
	    //Timer anschalten
	    IPS_SetScriptTimer($_IPS['SELF'], 180); // 180 s
	}
}
?>

Jetzt legst Du einen Astro Timer an bei Sonnenuntergang (siehe oben) der Timer führt das Skript Lampe aktiv aus und setzt damit die Variable Lichtschaltung Nacht auf true und schaltet das Licht auf 50 %.
Zweites Ereignis erstellen das täglich um 23 Uhr ausgeführt wird und das Skript Lampe deaktiv ausführt und die Lampe ausschaltet
Drittes Ereignis erstellen das bei Variablen Aktualisierung der Variable des Bewegungsmelders ausgelöst wird und das Skript Umschaltung ausführt

Hallo Fonzo,

habe Deinen Vorschlag befolgt und das Licht schaltet genau wie gewünscht. Vielen, vielen Dank. Hätte ich alleine nicht hinbekommen. :slight_smile:

Kannst Du mir bitte abschließend noch eine Möglichkeit aufzeigen, wie ich das Licht in einer 2. Zeitzone (im ersten Beitrag bereits versucht zu erklären) schalten kann?

Denn jetzt wird das Licht mit den von Dir vorgeschlagenen Einstellungen / Skripten exakt um 23.00 Uhr ausgeschaltet, aber den Rest der Nacht bleibt der Bewegungsmelder inaktiv und das Licht aus. Ich bräuchte also eine zweite Zeitzone von 23.00 Uhr bis Sonnenaufgang.

In der 2. Zeitzone soll das Licht lediglich durch den Bewegungsmelder ein und ausgeschaltet werden. Ein Dimmwert ist nicht gewünscht.

Gruss schulzenman

Für die zweite Zeitzone wäre das Vorgehen analog nur umgedreht.

[ul]
[li]Variable Type Bool Name z.B. Lichtschaltung Nacht Zeitzone 2
[/li][li]Skript Zeitzone 2 aktiv setzt die Variable Lichtschaltung Nacht Zeitzone 2 auf true
[/li][li]Skript Zeitzone 2 deaktiv mit enthalten Schaltbefehl für aus und setzt die Variable Lichtschaltung Nacht Zeitzone 2 auf false
[/li][li]Skript On Zeitzone 2 mit enthaltenen Schaltbefehl für 100 %
[/li][li]Skript Off Zeitzone 2 mit enthaltenen Schaltbefehl für 0%
[/li][li]Skript Umschaltung Zeitzone 2
[/li][/ul]

Skript Umschaltung Zeitzone 2


<? 
$zone2 = GetValue(12345 /*[Lichtschaltung Nacht Zeitzone 2]*/); 
if ($zone2) 
{ 
    if($_IPS['SENDER'] == "TimerEvent") 
    { 
        // 0 % setzten 
       // Skript mit Schaltbefehl für 0 % aufrufen 
          IPS_RunScript(23456 /*[Off Zeitzone 2]*/); 
      
        //Timer ausschalten 
        IPS_SetScriptTimer($_IPS['SELF'], 0); 
    } else { 
        // 100 % setzten 
        // Skript mit Schaltbefehl für 100 % aufrufen 
           IPS_RunScript(34567 /*[On Zeitzone 2]*/); 

      
        //Timer anschalten 
        IPS_SetScriptTimer($_IPS['SELF'], 180); // 180 s 
    } 
} 
?>

Jetzt legst Du einen Astro Timer an bei Sonnenaufgang der Timer führt das Skript Zeitzone 2 deaktiv aus und setzt damit die Variable Lichtschaltung Nacht Zeitzone 2 auf false und schaltet das Licht aus falls es in dem Moment noch an sein sollte.
Zweites Ereignis erstellen das täglich um 23 Uhr ausgeführt wird und das Skript Zeitzone 2 aktiv ausführt und damit die Variable Lichtschaltung Nacht Zeitzone 2 auf true setzt
Drittes Ereignis erstellen das bei Variablen Aktualisierung der Variable des Bewegungsmelders ausgelöst wird und das Skript Umschaltung Zeitzone 2 ausführt, letztes könnte man sich theoretisch auch sparen wenn man Umschaltung und Umschaltung Zeitzone 2 mit Bedingungen zu einem Skript zusammenfasst und dann braucht man auch nur ein Ereignis.

Hallo Fonzo,

auch dieses Mal kann ich bestätigen, dass Dein Vorschlag, wie ich eine 2. Zeitzone einrichte, funktioniert. Das Licht schaltet wie gewünscht. DANKE. :slight_smile:

Leider ist mir ein kleiner Fehler zur 1. Zeitzone aufgefallen.

Folgendes passiert:

Dem Skript „Licht außen aktiv“ ist ein Ereignis zugefügt, welches mit dem „Sonnenuntergang“ verknüpft ist.
Dadurch wird korrekterweise jeden Tag zu Beginn des Sonnenunterganges das Aussenlicht mit einem Dimmwert eingeschaltet.

Wird danach die Uhrzeit des „Astronomischen Dämmerungsende“ erreicht (ca. 2 Stunden später) schaltet das Licht wieder aus. Egal ob es gedimmt ist oder nicht. Erst mit der nächsten Bewegungserkennung schaltet das Licht wieder ein und arbeitet korrekt bis 23.00 Uhr. Was ich nicht verstehe, warum schaltet das „Astronomische Dämmerungsende“ mein Licht einfach aus, obwohl es nirgendwo von mir verknüpft worden ist. Muss ich irgendwo ein Häckchen setzen, damit ausschließlich die Variable „Sonnenuntergang“ unter der Kerninstanz „Location“ genutzt wird?

Gruss schulzenman

Das ist spannend, das muss ich selber mal versuchen nachzustellen ob das bei mir auch auftritt.

Hallo Fonzo,
hallo zusammen,

nachdem ich das Einschaltverhalten analysiert habe muss ich meine Aussage noch einmal korrigieren.

Nicht nur das „Astronomische Dämmerungsende“, sondern auch andere Satusvariablen schalten mein Licht aus. Verknüpft ist mein Licht ausschließlich mit Sonnenuntergang. Aber auch das

– zivile Dämmerungsende
– Nautisches Dämmerungsende und dann
– Astronomisches Dämmerungsende

Schalten das Licht aus.

Wie kann das sein? Bitte helft mir, ich finde einfach nicht den Fehler.

Gruß schulzenman

anbei noch einmal ein Foto, wie ich die Scripte und das Ereignis „Sonnenuntergang“ angelegt habe.

Ich versuche das mal am Wochenende bei mir mit Dummy Variablen nachzustellen.

Mach Dir bitte erst einmal keine Mühe. Ich denke, ich habe den Fehler gefunden. Für die Verknüpfung mit Location/Sonnenuntergang habe ich den Auslöser „Bei Variablenaktualisierung“ gewählt. Probiert habe ich heute aber den Auslöser „Bei Variablenänderung“. Und siehe da, es läuft bis jetzt.

Ich werde übers Wochenende noch weiter beobachten und dann noch einmal Feedback geben, da ich fälschlicherweise meine Rollläden auch mit dem Auslöser „Bei Variablenaktualisierung“ gesteuert habe. Da ist folgendes passiert.

  • Rollladen schließt wie gewünscht zum Sonnenuntergang (Verknüpfung ist ja vorhanden)
  • Rollladen wird manuell morgens geöffnet, da keine Verknüpfung mit Sonnenuntergang vorhanden ist. OK.
  • Öffne ich aber den Rollladen manuell zwischen Sonnenuntergang und Sonnenaufgang, schließen die Rollläden automatisch bei jeder Aktualisierung der Dämmerungszeitpunkte (zivil, nautisch, astronomisch).

Aber wie erwähnt, ich melde mich noch einmal.

Gruss schulzenman

Das Problem hatte ich auch, gelöst durch eine Hilfsvari, ein Skript schaltet bei Dämmerung (Variänderung) die Vari auf zb Nacht und morgens wieder zurück.
Diese Vari ist nun dein Trigger für die Beleucht-Skripte

Hallo zusammen,

was die Scripte betrifft, um die Außenleuchte zu schalten, kann ich schon einmal berichten. Sie arbeiten fehlerfrei. Dazu werde ich in den nächsten Tagen diese hier online stellen, für alle die solch ein Sript(e) benötigen.

@Axel 37

Kannst Du bitte etwas ausführlicher von dieser Hilfsvariable berichten? Ich habe es nicht verstanden. Mir ist eben zum Sonnenuntergang aufgefallen, dass 2 von 5 Rollläden nicht automatisch geschlossen haben. :banghead:

Wie kann ich vorgehen, um zu erkennen, warum das so ist?

durch das Schalten der HiVari habe ich unterbunden, dass bei Neuberechnug di Vari am „zappeln“ ist. :slight_smile:
so wird sie nur 2x am Tag definitiv verändert und meine Tag-/Nachtschaltung ausgeführt, resp. arbeiten bestimmte Skripte mit einer Abfrage auf Zustand zb Beleuchtung…
also nix wildes

$tag	=	getvalue(30210 /*[Location\Ist es Tag]*/);
echo $tag;
setvalue(45580 /*[SYSTEM\Regen/Sonne\Skripte\sonstige\TagNacht variable schalten\Tag/Nacht]*/,$tag);

Hallo zusammen,

hier noch einmal die Zusammenfassung meiner Lichtschaltung einschließlich der Scripte. Vielleicht kann ich damit ja auch jemanden helfen.

Zeitzone 1: Sonnenuntergang bis 23.00 Uhr
Zeitzone 2: 23.00 Uhr bis Sonnenaufgang

Zeitzone 1:

Script „Aussenlicht 100%“:

EIB_Scale(29300 /*[Stammdaten\Licht\Dimmen\Außen Dachkasten 50%]*/, 100);

Script „Aussenlicht 20%“:

EIB_Scale(29300 /*[Stammdaten\Licht\Dimmen\Außen Dachkasten 50%]*/, 20);

Script „Licht Aussen aktiv“:

EIB_Scale(29300 /*[Stammdaten\Licht\Dimmen\Außen Dachkasten 50%]*/, 20);
SetValueBoolean(21297 /*[Stammdaten\Skripte\Aussenlicht-schalten-20%(Dämmerung)\Lichtschaltung Nacht]*/, true);

Script „Licht Aussen deaktiv“:

EIB_Scale(29300 /*[Stammdaten\Licht\Dimmen\Außen Dachkasten 50%]*/, 0);
SetValueBoolean(21297 /*[Stammdaten\Skripte\Aussenlicht-schalten-20%(Dämmerung)\Lichtschaltung Nacht]*/, false);

Script „Umschaltung“

$twilight = GetValue(21297 /*[Stammdaten\Skripte\Aussenlicht-schalten-20%(Dämmerung)\Lichtschaltung Nacht]*/); 
if ($twilight) 
{ 
    if($_IPS['SENDER'] == "TimerEvent") 
    { 
        // 20 % setzten 
       // Skript mit Schaltbefehl für 20 % aufrufen 
          IPS_RunScript(56379 /*[Stammdaten\Skripte\Aussenlicht-schalten-20%(Dämmerung)\Aussenlicht-20%]*/); 
      
        //Timer ausschalten 
        IPS_SetScriptTimer($_IPS['SELF'], 0); 
    } else { 
        // 100 % setzten 
        // Skript mit Schaltbefehl für 100 % aufrufen 
           IPS_RunScript(22546 /*[Stammdaten\Skripte\Aussenlicht-schalten-20%(Dämmerung)\Aussenlicht-100%]*/); 

      
        //Timer anschalten 
        IPS_SetScriptTimer($_IPS['SELF'], 180); // 180 s 

Zeitzone 2:

Script „Licht Aussen Zeitzone 2 aktiv“:

SetValueBoolean(38616 /*[Stammdaten\Skripte\Außenlicht-schalten-100%(Nachts)\Umschaltung Zeitzone 2]*/, true);

Script „Licht Aussen Zeitzone 2 deaktiv“:

EIB_Scale(29300 /*[Stammdaten\Licht\Dimmen\Außen Dachkasten 50%]*/, 0);
SetValueBoolean(38616 /*[Stammdaten\Skripte\Außenlicht-schalten-100%(Nachts)\Umschaltung Zeitzone 2]*/, false);

Script „Off Zeitzone 2“:

EIB_Scale(29300 /*[Stammdaten\Licht\Dimmen\Außen Dachkasten 50%]*/, 0);

Script „On Zeitzone 2“:

EIB_Scale(29300 /*[Stammdaten\Licht\Dimmen\Außen Dachkasten 50%]*/, 100);

Script „Umschaltung Zeitzone 2“:

$zone2 = GetValue(38616 /*[Stammdaten\Skripte\Außenlicht-schalten-100%(Nachts)\Umschaltung Zeitzone 2]*/);  
if ($zone2)  
{  
    if($_IPS['SENDER'] == "TimerEvent")  
    {  
        // 0 % setzten  
       // Skript mit Schaltbefehl für 0 % aufrufen  
          IPS_RunScript(28362 /*[Stammdaten\Skripte\Außenlicht-schalten-100%(Nachts)\Off Zeitzone 2]*/);  
       
        //Timer ausschalten  
        IPS_SetScriptTimer($_IPS['SELF'], 0);  
    } else {  
        // 100 % setzten  
        // Skript mit Schaltbefehl für 100 % aufrufen  
           IPS_RunScript(22235 /*[Stammdaten\Skripte\Außenlicht-schalten-100%(Nachts)\On Zeitzone 2]*/);  

       
        //Timer anschalten  
        IPS_SetScriptTimer($_IPS['SELF'], 180); // 180 s