Anfängerfrage bzgl. Scriptausführung im bestimmten Zeitraum

Hallo Zusammen,

ich möchte gerne einen LED Stripe über einen Bewegungsmelder ansteuern.
Der Stripe soll dabei automatisch an gehen, sofern eine Bewegung von 0:00 Uhr bis 6:00 Uhr erkannt wird.

Ich habe es nun folgendermaßen umgesetzt. Bin mir aber nicht sicher, ob die Herangehensweise richtig ist.

Erstellung zyklisches Ereignis, täglich von 0:00 Uhr bis 06:00 Uhr, alle 2 Sekunde ausführen.

PHP-Code:
$Bewegungsmelder = getValue(10267); // Status des Bewegungsmelders auslesen

if ($Bewegungsmelder == true)
{
PJ_DimRGBW(51041,128,2,64,2,32,2,0,0); // Ansteuerung RGB-LED Stripe
}

else
{
PJ_RunProgram(51041, 0); // RGB LED Stripe ausschalten.
}

Werden durch das Script nicht zuviel Ressourcen verbraten? (Immerhin wird ja nun alle 2 Sekunden überprüft, ob es eine Bewegung gibt)

Kennt Ihr eine elegantere Lösung?
Vielleicht mit einem ausgelösten Ereignis bei Variablenänderung auf TRUE.
Es muss eben sichergestellt werden, dass die LEDs nur in der Zeit von 0:00 Uhr bis 6:00 Uhr angesteuert werden.

Für eine kurze Anwort wäre ich Euch dankbar!

Viele Grüße
Micha

Hi ja das ist echt ein wenig zu viel für ips.

Hier mein Vorschlag:

  1. Setzte das Script auf den Status des Bewegungsmelders und stelle es das er bei einem bestimmten Wert, also true ausgelöst werden soll.

  2. Hier mein Script:


<?
$Zeit = date ("Hi");
$Nachts = "2100";
$Tag = "0600";

// Zwischen 21Uhr  und 6 Uhr dimmt er das Licht auf Stufe 5

If ( $Zeit > $Nachts) & ( $Zeit < $Tag)
{
FS20_SetIntensity(50875 /*[Flur\Flur Dimmer]*/  ,5,0);
}

else If (( $BBM == true) &( $FL == false))
{
FS20_SetIntensity(50875 /*[Flur\Flur Dimmer]*/ ,16,0);
}
?>

  1. Du must nur noch die Befehle ändern was ausegführt werden soll.
  2. Die Uhrzeit wann was ausgelöst werden soll.
  3. fertig.

Bei fragen einfach hier Posten.

Klasse, danke!

Was bedeutet in Deinem Script $BBM und $FL?

$BBM=GetValue ( 35464 /[Bewegungsmelder\Flur B.M.2\Status]/ );
$FL=GetValue (19378 /[Flur\Flur Dimmer\Status]/ );

Welche Bewegungsmelder hast du den ? FS20, HM ?

Ist ein HM-Bewegungsmelder!

Ok und klappts ?

nee, noch nicht ganz.

Bekomm folgende FM:
Parse error: syntax error, unexpected ´&´ on line 10

Die Zeile 10 ist folgende:
If ( $Zeit > $Nachts) & ( $Zeit < $Tag)

Hier mal das ganze Script:

$BM=GetValue (17212);
$LED=GetValue (16455);

$Zeit = date ("Hi");
$Nachts = "1947";
$Tag = "0600";

// Zwischen 0 Uhr  und 6 Uhr wird das Script ausgeführt

If ( $Zeit > $Nachts) & ( $Zeit < $Tag)
{
PJ_DimRGBW(51041,128,2,64,2,32,2,0,0);
}

else If (( $BM == false) &( $LED > 0))
{
PJ_RunProgram(51041, 0);
}

Das muss && sein & ist bitweise.

Hm bei gehts, aber versuchs mal so :
If (( $Zeit > $Nachts) & ( $Zeit < $Tag))

geht leider mit beiden Modifikationen nicht.
Hab es einmal so:

(($Zeit > $Nachts) & ($Zeit < $Tag))

und so ausprobiert:

(($Zeit > $Nachts) && ($Zeit < $Tag))

Leider ohne Erfolg.

Der folgende Scriptabschnitt funktioniert jedoch:


else If (($BM == false) && ($LED > 0))
{
PJ_RunProgram(51041, 0);

Sprich, wenn Bewegungsmelder = false und LEDs noch an sind, wird
der LED Stripe ausgeschaltet.

Nur den Befehl zum anschalten frisst er nicht richtig. Es erscheint nun auch keine FM mehr.

hm verstehe ich nicht ?

Dein Schript sieht gut aus, warum geht das net ?

if($Zeit > $Nachts ||  $Zeit < $Tag)

If (( $Zeit < $Nachts) & ( $Zeit > $Tag))

OK, ich hab den Fehler gefunden.

Es liegt an der Zeitwahl.
Wenn ich folgendes eingeben, funktioniert es:
($Zeit > $Nachts)

So kann ich aber keinen Zeitraum eingeben, bis wann die LEDs geschaltet werden sollen.

Hast Du es mal so probiert?

If (( $Zeit < $Nachts) and ( $Zeit > $Tag)) 

Super Rainer,

Mit Deiner Abfrage: If ($Zeit > $Nachts || $Zeit < $Tag)
funktioniert es.

Klasss, DANKE!

Grüße
Micha