bin gerade an meinem zweiten IPS-Projekt und stehe vor einem Problem… Ich muss eine Blink-Ampel steuern. Diese muss man im Dash manuell ein- und ausschalten können, was natürlich null Problem ist.
Mein Problem nun: Ich brauche auch einen Button „10 min“ ein. Wie kann ich das realisieren? ips_sleep soll da ja nicht Mittel der Wahl sein, da ich damit alles blockiere. Aber wie mache ich es richtig?
Das hier ist wohl der falscheste aller falschen Wege
Wäre super, wenn mir da jemand helfen könnte… Stelle dann auch hoffentlich bald mein „IPS-gesteuertes Feuerwehrhaus“ mit kompletter Haussteuerung über IPS und EIB incl. Einsatz-Anzeige-Tableau über IPS etc. vor…
… getestet (oben fehlt das Ausschalten des Timers): Praxis-Beispiel einer Außenbeleuchtung.
Wenn es dunkel ist (hier: $daylight == 0) und die Küchentür geöffnet wird,
wird die Beleuchtung für 5 Minuten eingeschaltet.
Tipp: ich habe das Skript bei mir um eine Variable erweitert: Status des Bewegungsmelder außen
Dadurch geht die Beleuchtung nur dann an, wenn man von innen nach außen geht.
Guten Tag,
ich vermute, daß ich mit Ihrem Skript erreichen könnte, daß in meinem Fall die Lampe angeht, 10 Minuten nachdem das Bad-Fenster geöffnet wurde.
Wie soll ich es dann machen ?
Genau so, wie es in dem Skript steht. Ansonsten, wenn etwas nicht geht, dann mal bitte das bisher probierte hier zeigen und dazu schreiben, was nicht geht.
Versuche mal diese Script, erstelle für das Script ein Auslösendes Ereignis mit Deiner Auslöser ID 13709 unter Ereignis hinzufügen.
Script sollte dann so funktionieren.
Was " TPLHS_PowerOn" für ein Befehl sein soll weiß ich nicht, ich vermute das hängt an dem HM Aktor ?
<?php
//Trigger: Variablen-Änderung: zB auf Änderung besser auf True ,
//in Ereignis (als Auslösendes Ereignis die Variablen ID 13709) definieren !!
$id_aktor = 57730 ;
if($_IPS['SENDER'] == "TimerEvent")
{
HM_WriteValueBoolean($id_aktor , false);
IPS_SetScriptTimer($_IPS['SELF'], 0);
}else{
// TPLHS_PowerOn($id_aktor); // ... bis Lampe (Stecker TPLink) angeht
// ????? was ist TPHS usw wahrscheinlich willst Du den HM Aktor schalten, dann
HM_WriteValueBoolean($id_aktor , true);
IPS_SetScriptTimer($_IPS['SELF'], 1 * 6); // es wird 6 Sekunden (Test) gewartet ...
}
Ausschalten um nach 6 Sekunden noch mal auszuschalten ist - wenn ich den Fragesteller richtig verstanden habe - nicht das Ziel. Wenn das Skript auf das Badfenster getriggert wird, dann muss die Lampe im else-Teil angeschaltet werden.
Hallo Zusammen,
zunächst vielen Dank für die schnelle Rückmeldungen!
ich habe es mit folgendem Code versucht, allerdings schaltet sich die Lampe (an einem TPLink-Stecker) sofort, nicht erst nach 60 Sekunden
In $_IPS[SELF] wird eine ID übergeben.
Vermutlich hast Du das Script direkt von Hand gestartet.
Wenn es richtig (Sender = TimerEvent) getriggert wird, dann steht ein Wert <> 0 drin und der Timer wird korrekt gesetzt.
Faszinierend, was hier für verwirrendes Zeug geschrieben wird. $_IPS[‚SELF‘] ist nicht 0, egal wer das Skript startet. Mit $_IPS[‚VARIABLE‘] passiert das schon mal, aber wenn mich nicht alles täuscht, kann $_IPS[‚SELF‘] in einem Skript nicht 0 sein.
So … jetzt versuch bitte mal, das Skript zu verstehen und führe Dir vor Augen, was es macht. Wenn es durch ein Ereignis gestartet wird, wird das Ding eingeschaltet und ein SkriptTimer wird gesetzt. Wenn der SkriptTimer das Skript aufruft, wird das Ding ausgeschaltet und der Timer auf 0 gesetzt. Möchtest Du das? Ich glaube nicht.
Du möchtest beim ersten Aufruf des Skriptes - welcher durch das Ereignis passiert - den Timer setzen. Wenn der abgelaufen ist, dann soll das Ding angeschaltet werden. Richtig?
Versuche das irgendwie zu verstehen. Wenn es Dir irgendwer vorbetet, hast Du nix gelernt und nix verstanden.
Das was ich in #10 schrieb ist natürlich auch Quatsch. Sorry.
OK, Du hast vielleicht Recht und ich hatte spontan die falsche Idee, ohne dass ich es ausprobiert habe.
Ich hatte nur überlegt warum $_IPS[‚SELF‘] 0 sein kann.
Mein Fehler, sorry. Das Gegenteil von gut ist gut gemeint.
//Trigger: Variablen-Änderung: "STATE"
$id_aktor = 49439;
// wenn das Skript durch das Timer-Event gestartet wird:
if($_IPS['SENDER'] == "TimerEvent"){
// Aktor ausschalten
TPLHS_PowerOff($id_aktor); // TPLink-Stecker ausschalten
// SkriptTimer des Skriptes auf 0 setzen (deaktivieren)
IPS_SetScriptTimer($_IPS['SELF'], 0);
// wenn das Skript NICHT durch das TimerEvent gestartet wurde, also durch ein Ereignis oder per Hand (zum Beispiel)
}else{
// SkriptTimer auf 1 Minute setzen, d.h. nach einer Minute wird das Skript wieder ausgeführt.
IPS_SetScriptTimer($_IPS['SELF'], 1 * 60); // 1 Minuten
// Aktor einschalten
TPLHS_PowerOn($id_aktor); // TPLink-Stecker einschalten
}
Guten Tag,
zunächst vielen Dank für die schnellen Reaktionen!
ich habe das Skript von #12 mit #16, und finde keinen Unterschied…
Wie beschrieben wird die Lampe sofort, nicht erst nach 60 Sekunden eingeschaltet.
Gruß,
A.
Guten Tag,
zunächst vielen Dank für die schnellen Reaktionen!
ich habe das Skript von #12 mit #16 verglichen, und finde keinen Unterschied…
Wie beschrieben wird die Lampe sofort, nicht erst nach 60 Sekunden eingeschaltet.
Gruß,
A.
ich habe es mit folgendem Code versucht, allerdings schaltet sich die Lampe (an einem TPLink-Stecker) sofort, nicht erst nach 60 Sekunden
Wenn Du nach 60 Sekunden „AUS“ haben willst, drehe die Befehle in der Schleife um, hab’s aber anders verstanden.
Ich sehe nicht, ob Du ein Ereignis in diesen Script erstellt hast, ich gehe mal davon aus.
Gruß Helmut