ich möchte eine Anwesenheitssteuerung in der Art machen:
in der Zeit zwischen 23 und 23:30 soll das Licht angehen und dann zwischen 10-15 Minuten anbleiben.
Das Licht aus/an geht schon über Modbus. Derzeit habe ich zwei Timer gesetzt, einen für 23 Uhr, den anderen dann 23:15. Das ist dann aber fix.
Wie sollte man so etwas aufbauen?
ich nutze den Astrotimer dafür , dann gehen die Lampen oder was auch imemr in abhägigkeit zum Sonnenuntergang oder anderen bedingungen an/aus. Und es ist nicht so das jeder weiß um 23:00 geht licht an
Zwischenfrage: Geht es um eine Licht- oder um eine Anwesenheitssteuerung?
Anwesenheit mach ich aktuell über Wlan-Tracking der Handys im hause, gepaart mit einigen Abfragen
diverser anderer Geräte…
Ich bin schon ein wenig weiter. Hatte Verständnisprobleme mit dem Timer.
Der neu erstellte Timer läuft nun schon weiter, nur suche ich nach einer Möglichkeit, beim neu erstellten Timer ein Init der variablen Zeiten vorzunehmen. Das habe ich noch nicht hinbekommen.
Zum Verständnis, wenn Timer noch nicht läuft, wollte ich den Timer erzeugen und gleich noch die Variablen Zeiten über ramdomize berechnen. Danach läuft der Timer im Minutentakt und ich kann auf die variablen Zeiten reagieren.
Danke für den Tipp. Vielleicht in der nächsten Ausbaustufe.
Aktuell habe ich es nun so hinbekommen, wobei ein Ereignis nun immer auf beispielsweise 22 Uhr getriggert ist. Danach kommen dann die verschiedenen Zeiten. Ich muss nur noch die beiden Zeiten abfragen an = LichtAnNachMinuten und aus = LichtAusNachMinuten.
//Wert holen
$MinutenNachStart = GetValue(35387 /*[Program\Licht\data\Minutenzaehler]*/);
if($_IPS['SENDER'] == "TimerEvent")
{
if ($MinutenNachStart == 0)
{
//Ein verzögert zwischen 5 und 15 Minuten
$Minuten = rand(5, 15);
SetValue(53303 /*[Program\Licht\data\LichtAnNachMinuten]*/, $Minuten);
//Aus verzögert zwischen 10 und 15 Minuten
$Minuten = rand(10, 15);
SetValue(27520 /*[Program\Licht\data\LichtAusNachMinuten]*/, $Minuten + GetValue(53303 /*[Program\Licht\data\LichtAnNachMinuten]*/));
}
$MinutenNachStart +=1;
IPS_SetScriptTimer($_IPS['SELF'], 60);
if ($MinutenNachStart >= GetValue(27520 /*[Program\Licht\data\LichtAusNachMinuten]*/))
{
//Timer stoppen und Zeit zurücksetzen fürs nächste Mal
IPS_SetScriptTimer($_IPS['SELF'], 0);
$MinutenNachStart = 0;
}
}
//Wert wieder zurückschreiben
SetValue(35387 /*[Program\Licht\data\Minutenzaehler]*/, $MinutenNachStart);
Danke nochmals für den Tipp.
Nun habe ich einige Modbus Werte einer Wago als Link eingefügt.
Wie liest das Script nun die Zustände aus?
Man müsste doch beispielsweise jede Minute den Zustand der Lampen lesen und irgendwo speichern.
Ich sehe bei „SimulationData“ aber keine Werte.
Mache ich da irgend etwas falsch?
Ich sehe nur einen Timer im Objektbaum,
UpdateDataTimer (Ereignis: Alle 1 Tag(e) um 00:00:01)