Wie weise ich einer Variablen eine bestimmte Uhrzeit zu?

Hallo, möchte mir grad eine Steuerung für meine Beleuchtung schreiben, dazu möchte ich in Abhängigkeit zur Uhrzeit den Dimmer entsprechend schalten.

mit

$Zeit = date („H:i:s“);

bekomme ich ja schon mal die aktuelle Zeit. Ich weiß auch wie ich die mit „>“ oder „<“ diese mit einer anderen Variable, in der die Uhrzeit steht, vergleichen kann. Aber ich weiß grad nicht wie ich der anderen Variable eine Zeit zuweise. Zum Beispiel 24:00Uhr. Kann mir da vielleicht jemand kurz mal helfen?

Hab’s inzwischen gefunden :wink: Vielleicht kann es ja jemand gebrauchen oder hat eine bessere Lösung.

$Abdimmzeitpunkt = date ("H:i:s", mktime (22,00,00)); // Zugewiesene Uhrzeit 22:00:00

Hmmmh,

ich habe das so gelöst:

$nachts="21:00";

Gruß
Olaf

wie einfach es manchmal auch geht… :slight_smile:

Hm ok das habe hinbekommen aber wie bekomme ich es hin das zwischen 21:00 Uhr und 06:00 Uhr das Licht auf 40% einschalten und sonst immer 100 % ?

Hier mien Code:

<?
$Zeit = date ("H:i:s");
$Nachts = "21:00";
$Tag = "06:00";
$L = getvalue (34895 /*[Büro\Büro Dimmer\Status]*/  ) ;

If (( $Zeit > $Nachts) and ( $Zeit > $Tag))
{
echo " OK ";

FS20_SetIntensity(28220 /*[Büro\Büro Dimmer]*/ , 7, 0);
}

else echo " Nö";




?>

Und wie verknüpfe ich das mit einem Dimmer ?

die Prüfbedingung muss „ODER“ sein, nicht „UND“! bitte auch die zweite logische Prüfung ("<" statt „>“) anpassen



If (( $Zeit > $Nachts) || ( $Zeit < $Tag))
{ 
   // Schaltbefehl für Nachtbetrieb
   FS20_SetIntensity(28220 /*[Büro\Büro Dimmer]*/ , 7, 0); 
} 
else
{
    //hier Schaltbefehl für Tagbetrieb
}

Nachtrag: ich weis nicht, ob PHP mit den formatierten Zeitangaben umgehen kann, ich würde „:“ aus allen Variablen-Werten entfernen:


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

Vielen Dank für deine Antwort.

Das Script funzt soweit aber wie verknüpfe ich das ?

Wenn ich es auf die Veriable Status vom Licht setzte ensteht eine endlosschleife.

dann solltest du mal genauer ausführen was genau passieren soll bzw. worauf reagiert werden soll. Normalerweise ist solche Art von Scripten dafür gedacht, auf Ereignisse zu reagieren (Bewegungsmelder). Willst Du auf ein solches Ereignis reagieren oder - das genaue Gegenteil: Dauerlicht, nur nachts gedimmt?

also ich versuch mal:

Also wenn ich das Licht einschalte egal ob per Schalter oder per Webfront soll er das script ausführen.

Das script entscheidet anhand der Uhrzeit ob er 100 % oder nur 40 % (ab 22Uhr bis 6 Uhr ) einschalten soll.

Wie bekomme ich das hin ?

die einfache Variante: das Script selbst erscheint im WFE (entweder innerhalb der schon im WFE vorhandenen Kategorie oder per Link).

Etwas umständlicher: Variable anlegen (diese erscheint als Schaltaktor im WFE), als Variablen-Profil z.B. ~Switch hinterlegen und als „Eigene Aktion“ dieses Script eintragen. Hier muss das Script dann aber zusätzlich noch den Status der Variable - je nach Schaltvorgang- ändern.

Wenn Du schon einen Schalter im IPS hast, dann ein Ereignis unter dem Script anlegen, welches auf „Variablenänderung“ des Schalterrs reagiert (zusätzlich zu den oben beschriebenen Aktionen)

Kurzum: du sagts dem Script bzw. IPS, worauf das Script reagieren soll.

Hm das verstehe ich leider nicht.

Also meine Wandtaster schalten das Licht ohne IPS ein/aus.

Wie kann ich das script einbinden ?

Wie du es beschreibst habe ich es versucht, aber dann läuft das Script in einer Endlosschleife wenn ich das Licht einschalte :frowning:

sorry, ich werde aus deinen Beschreibungen nicht schlau. Wie hast du das Script eingebunden(was genau hast du gemacht?)? Was ist mit dem Wand-Taster -> ist der nun in IPS bekannt oder nicht?

Grundsätzlich: du brauchst ein Ereignis, welches das Script startet und auf welches das Script reagieren soll. In der Regel ist das ein Schalter-Status, Bewegungsmelder etc. Als Ergebnis ändert das Script dann den Status des Aktors.

Das Ereignis ist zum

    • wenn ich Dich richtig verstehe - ein Schaltvorgang aus dem WFE und
  1. ein Lichtschalter (Taster?!) ?

Nun kenne ich mich mit dem FS20-Zeugs nicht aus, aber zu 1. legst Du ein Ereignis unter dem Script an, welches auf Variablenänderung (Variable „Status“) reagiert und den Aktor nach den Prüfungsergebnissen im Script dimmt.
Zu 2. passiert genau das Gleiche, nur wird ein weiteres Ereignis unter dem Script angelegt welches auf die Statusänderung des Schalters reagiert. Dazu muss der natürlich im IPS bekannt sein.
Mir dämmert hier, dass Du gar keinen „intelligenten Schalter“ hast, der mit IPS kommunizieren kann ??? -> dann fällt diese Möglichkeit weg. Da stellt sich vielmehr die Frage ob das Konstrukt überhaupt Sinn macht.

Vielleich kannst Du jetzt nachvollziehen, was du noch an Infos liefern solltest wenn dir hier effizient geholfen werden soll - bevor ich hier endlos spekuliere;)

und: poste doch mal dein script!

Hi danke dir für deine Hilfe.

Also ich Versuche es mal:

  1. Der FS20 Dimmer wird mit der Adresse xy angesteuert

  2. Der Wandschalter sendet bei Tastentruck auch direkt den FS20 Dimmer an (mit der xy nummer)

  3. IPS kennt nur den Dimmer.

  4. Ich glaube auch da liegt das Problem, weil wenn der Status vom DImmer sich ändert auf True dann wird das script ausgelöst, und er dimmt es wenn es dem Uhrzeitbereich fehlt, und geht auf 100 % wenn es ausserhalb des Uhrzeitbereich ist.

Aber das Problem ist das ich das Licht nicht mehr dimmen und ausschalten kann :frowning:

  1. Ich benutze die StatusVariable vom Dimmer.

  2. Das Problem ist, das dass Script dann immer den Dimmer immer auf an setzt wenn ich es ausschalten will :frowning:

Das ist ja genau die Funktionalität die du hier im Thread angefordert hast. Das du zusätzlich manuell ein-. und ausschalten willst hast du nirgends beschrieben:)

ok, dann gehe ich mal davon aus, dass der Wandschalter im IPS anlernbar ist.
M.E. kommst Du nicht umhin, die Befehlskette von Wandschalter-> Dimmer auf Wandschalter -> IPS -> Dimmer zu ändern. Dann würde das Script (getriggert vom Wandschalter) auch wie gewünscht funktionieren.

Eine andere Möglichkeit wäre evtl., den Schaltvorgang des Wandtasters (ohne Änderung der Befehlskette) in IPS bekannt zu machen und damit das Script (auch wieder getriggert vom Wandschalter) anzusteuern.

Auf jeden Fall musst du IPS den manuellen Schaltwunsch irgendwie dem IPS bekannt machen.

Da ich aber nicht weiss, wie das FS20-Zeugs reagiert kann ich keine gesicherte Aussage dazu machen. Vielleicht melden sich aber die FS20-Experten dazu.

Zum Verständniss:

Wenn ich das Licht per Wandtaster einschalte bekommt das IPS mit :slight_smile:

Wenn ich den Taster für den DImmer drück geht das Licht an und und in IPS wechselt er von aus auf an.

Also das ist kein Prob.

Das ist mir schon klar, ich fragte aber: wie bekommt IPS das mit? -> über den Wandschalter oder den Aktor??

Momentan vermute ich, dass IPS dies nur über den Aktor mitbekommt.

Sei’s drum:

hier eine Script-Anpassung, die auch ein Ausschalte zulässt, Trigger ist dann nach wie vor die Variablen-Änderung von „Status“ des Aktors, das Script dimmt dann aber nur noch (abhängig von der Uhrzeit), Ausschalten erfolgt nur über den Wandschalter:


$Zeit = date ("Hi");  
$Nachts = "2100";  
$Tag = "0600"; 
$aktor_status = getValueBoolean(hier ID der Aktor-Variable eintragen);


If (( $Zeit > $Nachts) || ( $Zeit < $Tag)) && ($aktor_status == true)) 
{  
   // Schaltbefehl für Nachtbetrieb 
   FS20_SetIntensity(28220 /*[Büro\Büro Dimmer]*/ , 7, 0);  
}  
elseif ($aktor_status == true)
{ 
    //hier Schaltbefehl für Tagbetrieb 
}
 

wenn Du zusätzlich übers WFE schalten willst müsste es reichen wenn der Aktor im WFE auftaucht -> ist FS20 spezifisch, kann ich nichts zu sagen (auf jeden Fall nicht dieses Script als eigene Aktion im Variablen-Profil „Status“ hinterlegen)

Danke dir für deine Mühe und Hilfe.

Aber ich glaube das Problem liegt wo anders:

Wenn ich das Licht per Taster oder per Webfront einschalte, bekommt der Dimmer sofort den An Befehl.

Das Script wird dann/bzw gleichzeit ausgeführt, also weis dann der Dimmer nicht was er machen soll.

Das Script funktioniert soweit aber nicht über den Taster, auser der bekommt eine eigene Adresse, und alles läuft dann über ips.

Hallo,

Genau das hat raketenschnecke oben schon gemeint:

Das ist mir schon klar, ich fragte aber: wie bekommt IPS das mit? -> über den Wandschalter oder den Aktor??

Momentan vermute ich, dass IPS dies nur über den Aktor mitbekommt.

Ich fürchte, dass drapple da ein Grundverständnis-Problem hat - wenn ich das, was er schreibt richtig verstanden habe.

@drapple:

Du schaltetes mit dem FS20 Sender den Aktor direkt ein und aus, richtig?

Du möchtest da nun zusätzliche Logik rein bringen?

Falls neine, kannst Du aufhören zu lesen, dann bin ich auf dem Holzweg. Falls ja, dann lies mal weiter …

Dann musst Du Deine direkte Aktor / Sender Interaktion beenden, denn sonst wird es immer unschönes ein „nachregeln geben“ (und in Deinem Falle sogar eine Endlosschleife, weil Dein ausgesendetes Telegramm das Script grad nochmals neu triggert, was aber durch eine Semaphore behoben werden könnte).

Zur Zeit hast Du:

Sender --> Aktor (plus IPS „liest mit“)

Die richtige Logik wäre aber:

Sender --> IPS --> Aktor.

Das bekommst Du hin, indem Du den Sender NICHT auf die Adresse des Aktors setzt sondern irgendeine andere freie Adresse. Die erkennt dann IPS, führt das Script aus und sendet (an die ANDERE Adresse des Aktors) dann den tageszeit-abhängigen Helligkeitswert.

Es geht grundsätzlich auch so, dass Du IPS „nachregeln“ lässt. Dann wird aber das Einschalten immer zunächst zu einem vollen Helligkeitswert führen und sehr kurz danach fällt die Helligkeit auf den von Dir gewünschten Wert.

Das würde ich so nur dann machen, wenn ich partout eine Ausfallsicherheit brauche, also das Licht (dann aber immer „volle Kanne“) auch dann eingeschaltet werden soll, falls der Rechner, auf dem IPS läuft, gerade down ist.

Dazu brauchst Du dann eine Semaphore, die verhindert, dass das von IPS ausgesendete Telegramm gelcih nochmals zum Ausführen des Scripts führt.

jwka

jwka du hast mich verstanden.

Das ist eben die Frage, eigentlich habe ich alles so aufgebaut, das die Grundfunktionen (Taster in der Wand usw) auch ohne IPS laufen kann.

Ich vergesse einfach mal diesen nette Idee mit dem Uhrzeit-Dimmen, so wichtig ist das auch net, ich brauche das sowieso nur wenn ich mal Nachts auf klo gehe und da habe ich mir schon ein sehr einfaches Script geschrieben, das ich per FB und iPhone starten kann.

Aber vielen Dank für euere Hilfe und Nerven, das mit mir durchzudiskutieren.

Und eins noch:

Ich finde dieses Forum einfach nur der Hammer !

Ich habe noch nie in einem Forum so schnell und gute und freundliche Antworten/Lösungen bekommen.

Hut ab !

Macht weiter so !

Wenn ich mit meinem System fertig, poste ich mal meine Erfahrungen und Lösungen und wenn es klappt auch viele Videos für Einsteiger :slight_smile: