_Micha
4. April 2011 um 18:59
1
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:
Setzte das Script auf den Status des Bewegungsmelders und stelle es das er bei einem bestimmten Wert, also true ausgelöst werden soll.
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);
}
?>
Du must nur noch die Befehle ändern was ausegführt werden soll.
Die Uhrzeit wann was ausgelöst werden soll.
fertig.
Bei fragen einfach hier Posten.
_Micha
4. April 2011 um 19:46
3
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 ?
_Micha
4. April 2011 um 20:16
6
Ist ein HM-Bewegungsmelder!
_Micha
4. April 2011 um 20:35
8
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);
}
RWN
4. April 2011 um 20:36
9
Das muss && sein & ist bitweise.
Hm bei gehts, aber versuchs mal so :
If (( $Zeit > $Nachts) & ( $Zeit < $Tag))
_Micha
4. April 2011 um 20:58
11
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 ?
RWN
4. April 2011 um 21:07
13
if($Zeit > $Nachts || $Zeit < $Tag)
If (( $Zeit < $Nachts) & ( $Zeit > $Tag))
_Micha
4. April 2011 um 21:11
15
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.
UVoigi
4. April 2011 um 21:14
16
Hast Du es mal so probiert?
If (( $Zeit < $Nachts) and ( $Zeit > $Tag))
_Micha
4. April 2011 um 21:15
17
Super Rainer,
Mit Deiner Abfrage: If ($Zeit > $Nachts || $Zeit < $Tag)
funktioniert es.
Klasss, DANKE!
Grüße
Micha