Flurlicht mit unterschiedlichen Szenen

Hallo zusammen,

ich möchte gerne mein Flurlicht etwas in „Szene“ setzen und folgendes umsetzen:

Von 00:00 Uhr bis 05:00 Uhr soll bei Bewegung und entsprechender Luminance, das Flurlicht auf 20% schalten.
Nach kurzer Zeit geht das Licht dann wieder auf aus.

Von 05:00 Uhr bis 20:00 Uhr soll bei Bewegung und entsprechender Luminance, das Flurlicht auf 80% schalten.
Nach kurzer Zeit geht das Licht dann wieder auf aus.

Von 20:00 Uhr bis 00:00 Uhr soll bei Bewegung und entsprechender Luminance, das Flurlicht auf 80% schalten.
Nach kurzer Zeit geht das Licht auf 10%.

Nun zu meinem Skript:

<?
$varLuminanceFlureingang = GetValue (51944 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Wert\Luminance]*/);
$varBewegungFlureingang = GetValue (20690 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Status]*/);
$varAktuelleZeit = date("H:i"); 
echo $varAktuelleZeit."
";   
echo $varLuminanceFlureingang;

if ($varLuminanceFlureingang < 220 and $varBewegungFlureingang == true)                                                                                                             
  	{                                                                                                        
  	if 
	($varAktuelleZeit > "00:00" and $varAktuelleZeit <= "05:00") 
    ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,20);                     
  		else  
        ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,0);  
	}
	{	
	if 
	($varAktuelleZeit > "05:00" and $varAktuelleZeit <= "20:00") 
    ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,80);                     
  		else  
        ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,0);  
	}  
	{                                                                                                        
  	if 
	($varAktuelleZeit > "20:00" and $varAktuelleZeit <= "00:00") 
    ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,80);                     
  		else  
        ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,10);  
	} 
?>

Das Skript wird durch ein Event gesteuert, welches es ausführen lässt bei Bewegung.

Es wird kein Fehler beim Ausführen ausgeworfen, aber leider schaltet sich das Flurlicht auch nicht ein.

Du vergleichst die Uhrzeit hier als String da kannst Du kein größer oder so verwenden das funktioniert nicht. In dem Fall musst Du Integer also den Unixtime nutzten. Date ist nur dazu da um das als Nutzer im normalen Format lesen zu können.

Die Uhrzeit die Du schalten willst kannst Du mit


$currenttime = time(); 
$value = "2016-12-12T19:33:54"; // Zeitpunkt
 $timestamp = strtotime($value); // Timestamp berechnen

berechnen. Den aktuellen Zeitwert $currenttime kannst Du dann auch mit größer und kleiner mit $timestamp vergleichen das ist eine Zahl.

Leider stehe ich auf dem Schlauch…

Was ich verstanden habe ist, dass ich die Zeit als String angegeben habe und so nicht vergleichen kann.

Wie genau kann ich jetzt dein Skript einbinden?

Da du nur ganze Stunden benutzt, kannst du statt

$varAktuelleZeit = date("H:i");
$varAktuelleZeit = date("H");

benutzen.
Das könnte helfen

Hallo BennyS,

grundsätzlich kannst du auch Strings vergleichen. Ist sicherlich auch leichter lesbar :slight_smile:

Du solltest aber bei Bedingungen lieber die Operatoren && und || statt and und or verwenden und Klammern setzen. Das ist gebräuchlicher und eindeutiger:

if (($varLuminanceFlureingang < 220) && ($varBewegungFlureingang == true))

Ansonsten müssen nach einer If Bedingung die mehrzeiligen Anweisungen in {} gesetzt werden. Das hast du vergessen. So kann es noch nicht funktionieren :slight_smile:

if (Bedingung){
  Anweisung;
  Anweisung;
} else {
  Anweisung;
  Anweisung;
}

Gruß

Burkhard

Probier es mal so:


<?

 $varLuminanceFlureingang = GetValue (51944 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Wert\Luminance]*/); 
 $varBewegungFlureingang = GetValue (20690 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Status]*/); 
 
 $varAktuelleZeit = time();  
 // Intervall 1
 $startint1 = strtotime("00:00");
 $endint1 = strtotime("05:00");
 // Intervall 2
 $startint2 = strtotime("05:00");
 $endint2 = strtotime("20:00");
 // Intervall 3
 $startint3 = strtotime("20:00");
 $endint3 = strtotime("+1 day 00:00");
 
if ($varLuminanceFlureingang < 220 and $varBewegungFlureingang == true)                                                                                                              
{ 
	                                                                                                          
	  if($varAktuelleZeit > $startint1 and $varAktuelleZeit <= $endint1)
	  {  
	  		ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,20);                      
	  }
	  else   
	  {
	  	    ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,0);       
	  }
	  if ($varAktuelleZeit > $startint2 and $varAktuelleZeit <= $endint2)  
	  {
			ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,80);                      
	  }
	  else   
	  {
			ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,0);                                                                                                           
	  }
	  if($varAktuelleZeit > $startint3 and $varAktuelleZeit <= $endint3)  
	  {
			ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,80);                      
	  }
	  else   
	  {
			ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,10);   
      }
}  

?>

Danke.

Habe noch ein paar kleine Anpassungen vorgenommen und bspw. die einzelnen Timer und Lichtszenen in separate Skripts ausgelagert.

// Skript wird ausgeführt zum Steuern des Flurlichts zu bestimmten Uhrzeiten und Luminance
<?
$varLuminanceFlureingang = GetValue (51944 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Wert\Luminance]*/);		// auslesen der Helligkeit
$varBewegungFlureingang = GetValue (20690 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Status]*/);				// auslesen der Bewegung
 
$varAktuelleZeit = time();				// ermitteln der aktuellen Zeit im Unix-Format  
 
$startint1 = strtotime("00:00");		// Startzeit Intervall 1
$endint1 = strtotime("04:59");			// Endzeit Intervall 1

$startint2 = strtotime("05:00");		// Startzeit Intervall 2
$endint2 = strtotime("19:59");			// Endzeit Intervall 2
 
$startint3 = strtotime("20:00");		// Startzeit Intervall 3
$endint3 = strtotime("+1 day 00:00");	// Endzeit Intervall 3

echo $varLuminanceFlureingang;
 
if (($varLuminanceFlureingang <= 20) and ($varBewegungFlureingang === true))	 
{																										                                                                                                       
	{                                                                                                      
    if (($varAktuelleZeit >= $startint1) and ($varAktuelleZeit <= $endint1))									// Start Intervall 1
		IPS_RunScript (51220 /*[Erdgeschoss\Flur\Skripte\Flureingang_Lichtszene\Flureingang_Lichtszene_1]*/);	// Skript wird ausgeführt
	}
	{
	if (($varAktuelleZeit >= $startint2) and ($varAktuelleZeit <= $endint2))									// Start Intervall 2
		IPS_RunScript (10452 /*[Erdgeschoss\Flur\Skripte\Flureingang_Lichtszene\Flureingang_Lichtszene_2]*/);	// Skript wird ausgeführt
	}
	{
	if (($varAktuelleZeit >= $startint3) and ($varAktuelleZeit <= $endint3))									// Start Intervall 3
		IPS_RunScript (54976 /*[Erdgeschoss\Flur\Skripte\Flureingang_Lichtszene\Flureingang_Lichtszene_3]*/);	// Skript wird ausgeführt
	}
}
?>

Ein separates Skript micht Lichtszene sieht dann so aus:

// Skript zum Steuern des Flurlichts zu bestimmten Uhrzeiten und Luminance
<?
if ($_IPS['SENDER'] <> "TimerEvent")
{ 
IPS_SetScriptTimer($_IPS['SELF'], 120); // Timer mit 120 Sekunden aktivieren 
ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,20);  // Flurlicht wird auf 20% eingeschaltet 
} 
else 
{ 
IPS_SetScriptTimer($_IPS['SELF'], 0);  // Timer deaktivieren 
ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,0); 	// Flurlicht wird auf 0% geschaltet 
}
	 				        
?>