erst mal vielen dank an alle ich konnte schon viel von euch lernen.
jetzt hab ich ein problem aber kann keine lösung finden.
ich poste als erstes mal mein script, dann werden 90% wissen was ich falsch mache.
$time = date("H:i");
$tueroeffner = getvalue(30649 /*[Unsortiertes und im hintergrund arbeitendes reppenhauslicht\kanal 1 türöffner\STATE]*/ );
$nach6 = ("18:00");
$vor8 = ("08:00");
if (($tueroeffner == true)
and (($time >= $nach6)
or ($time <= $vor8)))
{
setvalue(33471 /*[Unsortiertes und im hintergrund arbeitendes reppenhauslicht\Treppenhauslicht\STATE]*/ , true);
}
und zwar möchte ich das ab 6 Uhr abends sobald ich den türöffner drücke auch das treppenhauslicht mit angeht.
ich hab nur leider keine ahnung wie ich zeiten vergleichen kann.
bitte habt nachsehen mit mir, bin jetzt den dritten tag am suchen nach einer lösung aber es will einfach nich…
Man kann das nicht nur scriptbasiert, sondern auch eventbasiert lösen. Soll heissen:
An die „State“ Variable deines Türöffners hängst Du zwei Events, eines gilt von 18.00 bis 7.59 und eines von 8:00 bis 17:59 und die rufen jeweils ein anders script auf.
vielen dank schon mal für eure schnelle hilfe.
ich stand als anfänger seit tagen mit beiden beinen auf der leitung. ich denk ihr wisst was ich meine.
bei vielen scripten mit sonnenaufgansberechnung und so blick ich leider einfach nich durch.
aber das
$uhrzeit="20:15";
$daten = explode(":", $uhrzeit); // trennen und in array
$zeit=$daten[0]*60+$daten[1]; //20:15 Uhr als Integer
klingt gut
und zwei scripte zu verwenden klingt auch gut mal ganz gut
danke soweit
Mit der festen Uhrzeit alleine wirst Du wahrscheinlich nicht glücklich werden. Im Sommer ist es um 18:00 noch taghell und die Beleuchtung überflüssig. Suche doch mal nach dem Astroskript (Klick) und nimm als Schaltschwellen den Sonnenauf- bzw. untergang.
hei kronos,
auch dir vielen dank für deine hilfe. das skript schaut echt toll aus, allerdings hab ich dort null durchblick.
wenn ich mal mehr ahnung von php und ip symcon habe werd ich garantiert so etwas verwenden.
momentan möcht ich aber verstehen und lernen.
mein script sieht gerade so aus:
$tueroeffner = getvalue(30649 /*[Unsortiertes und im hintergrund arbeitendes reppenhauslicht\kanal 1 türöffner\STATE]*/ );
$time = time();
$nach6 = mktime(15,0);
$vor8 = mktime(8,0);
if (($tueroeffner == true) and (($time >= $nach6) or ($time <= $vor8)))
{
setvalue(33471 /*[Unsortiertes und im hintergrund arbeitendes reppenhauslicht\Treppenhauslicht\STATE]*/ , true);
}
wenn du mitteilst, was nicht funktioniert, könnte man evtl. helfen
vielleicht noch ein Tipp zur Fehlersuche: lass dir im Script die Werte der Variablen per echo oder print_r() ausgeben. So kannst du überprüfen, ob Deine Annahmen stimmen. Das hilft sehr , man erlebt hier durchaus die ein oder andere Überaschung
hei raketenschnecke,
der tipp mit echo is echt genial. jetzt seh ich entlich was da so drin steht.
der fehler: also das problem ist, ich weis nicht wie ich eine Uhrzeit („18:00“) in eine Varieble ($nach6) bekomme um sie mit der aktuellen zeit ($time = date(„H:i“) oder $time = time() ) zu vergleichen.
<?
// Treppenhauslicht geht Abends mit an wenn der Türöffner betätigt wird
$time = date("H:i");//Aktuelle Uhrzeit
$tueroeffner = getvalue(30649);
$nach6 = date("18:00");//ab 18:00 Uhr
$vor8 = date("08:00");//bis 8:00 Uhr
if (($tueroeffner == true) and (($time >= $nach6) or ($time <= $vor8)))
{
HM_WriteValueBoolean(44311 , "STATE", true);
sleep (120);//Zeit in sekunden wie lange das Treppenhauslicht an bleiben soll
HM_WriteValueBoolean(44311 , "STATE", false);
}
?>
sleep (120);//Zeit in sekunden wie lange das Treppenhauslicht an bleiben soll
das solltest du auf keinen Fall machen. Das führt dazu, dass dieses Script als PHP-Task mindestens 120 Sekunden offen bleibt und erst nach Abarbeitung des Scripts geschlossen wird. Die Anzahl der max. möglichen PHP-Tasks ist aber begrenzt (IPS-Standard = 10). Sind alle 10 möglichen Tasks belegt, wandert der nächste IPS-Scriptaufruf (oder andere PHP-Aktivität) in die Warteschleife - bis wieder ein Task frei wird.
Die Folge ist: Dein System arbeitet die Befehle sehr stark verzögert ab.
Daher sollte man darauf achten, dass die Ressourcen (=PHP-Tasks) möglichst kurzfristig wieder freigegeben werden.
In diesem Fall würde ich dir ein Timer-Event empfehlen, welches nach Ablauf das Script erneut ansteuert.
hab den aktor im homematic konfigurator gesagt das er ein treppenhauslicht ist und 2 min an sein soll.
das macht er dann wenn ich direkt den taster drücke. giebt es da auch einen befehl von der ips aus das er des gleiche macht. oder geht des dann nur über „ON_TIME“? giebt es irgend wo eine liste was für befehle ich denn alles so bei homematic ausführen kann?
Genau das macht ON_TIME vor dem Schaltbefehl.
Damit sagst Du dem Aktor wie lange er an bleiben soll.
Geht aber nicht mit den Wired Aktoren soviel ich weiß.