Habe nun alles komplett neu eingerichtet, das Skript geht schon, es startet nur nicht sobald die Lampe an geht.
Durch das Skript wird ein ScriptTimer erstellt, dieser ist aber inaktiv und wird nicht aktiv, es sei dem ich gehe in das Skript und starte es.
Was ist so falsch das das Skript nicht selbstständig läuft?
Es muss schon einen Auslöser geben damit das Script startet.
Oder woher soll das Script wissen wann es starten soll?
Du musst Dir ein Ereignis erstellen wann es passieren soll und das Script auswählen und
dann noch Script starten auswählen.
Und ein gute Tipp dazu, bei dem Eregnis kannst weitere Bedingungen hinzufügen, das ersparrt manchmal
viel Scripterei… ( Sehr nützliche Funktion!)
Edit: Hier mal mein beispiel eines Scriptes, diesen kannst Du dir anpassen, kannst aber
auch als Beispiel anschuen. Bei mir müssen schon viele Bedingungen erfüllt sein.
Der muss jetzt nicht super korrekt sein, aber läuft astrein!
<?
$bm1=GetValue(26546);
$bm2=GetValue(34854);
$bm3=GetValue(33648); // Das sind Bewegusmelder
$tr=GetValue(26900); // Tür
$zeitmuster=GetValue(28594);
$zeitmuster2=GetValue(43085);
$zeitmuster3=GetValue(10804); // Verschiedene Zeiten
$hell=GetValue(10019); // Helligkeit draußen
$auto=GetValue(51114); // Automatik oder aus
if(($_IPS['SENDER'] == "TimerEvent") && ($bm1 === true && $bm2 === true && $bm3 === true && $tr === false && $zeitmuster === false && $zeitmuster2 === false && $zeitmuster3 === false))
{
RequestAction(47173,0);
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
if(($_IPS['SENDER'] == "TimerEvent") && ($bm1 === true && $bm2 === true && $bm3 === true && $tr === false && $zeitmuster === true or $zeitmuster2 === true or $zeitmuster3 === true))
{
RequestAction(47173,200);
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
elseif (($bm1 === false or $bm2 === false or $bm3 === false or $tr === true) and ($hell === false) and ($auto === true))
{
RequestAction(47173,1000);
IPS_SetScriptTimer($_IPS['SELF'], 30);
}
?>
Und so muss es bei Dir inetwa aussehen, beim Auslösen des Bewegungsmelders soll das Script gestartet werden:
Hoffe das hilft es Dir.
Könnte so bei Dir aussehen, für serre musst Dir nen Boalen erstellen.
Aber ohne gewähr, das es funktioniert…:
Klingt schon logisch mit dem Auslöser
Manchmal sieht man den Wald vor lauter Bäumen nicht…
Ok eingerichtet und klappt.
Theoretisch könnte man es auch auf den Status einrichten, egal ob manuell oder über Bewegungsmelder, wird eingeschaltet läuft der Timer, oder bringt der Status etwas negatives mit?
Jetzt benötige ich in WebFront und App nur die Möglichkeit den Timer zu deaktivieren, falls mal länger Licht benötigt wird.
Wie ginge das?
„Button Timer aus“ (Quasi)
Na im letzten Beispiel habs sogar schon zusammen geschmissen.
Aber ohne Gewähr ist ungetestet.
Erstellst Dir dort im Webfront wo Du die Taste haben möchtest
einen Boalen. Damit Du true und false umschalten kannst.
Dann die ID des Tasters in das Script eintragen.
Und testen, kann sein das es auch nicht korrekt ist,
kann selber nicht so gut programmieren…
Abschalten sollte es dann komplett, da würde das Skript unverändert bleiben.
Tag/Nacht und Helligkeit steuere ich über das auslösende Ergebnis, weitere Bedingungen, das ist einfach.
Oder macht es mehr Sinn ein 2. Ergebnis zum Skript hinzuzufügen das einiges steuert?
Als blutiger Anfänger in php finde ich ein Ergebnis sympatischer, aber lernen möchte ich ja auch.
Wenn das so überhaupt geht?
Der Timer läuft immer von vorne bei erneuten Ereignissen.
Würde ja sonst keinen Sinn machen.
Habe Dir oben mein Script als Beispiel hinzugefügt, schaue Dir den
genau an. Bei mir ist es auch so, das bei bestimmten Ereignissen
was anderes passiert.
Schaue Dir bitte genau an, ist nicht so schwer.
Wenn Du fragen hast, frag ruhig. Bin aber auch kein Profi…
Habe nun versucht eine Sperre, wie in euren Beiträgen erwähnt, einzurichten.
Komme aber nicht weiter.
Habe ein Dummy Modul eingerichtet.
Darunter eine Variable mit Boolean (True).
Aber diese zeigt nur true und false an, ein Schalter entsteht so ja keiner.
Wie erstellt man aus einer Variablen einen Schalter?
Wie ich ihn in die Ergebnisse bekomme weiß ich dann, glaube ich, wieder.
Habe das Skript aus Beispiel 2 genommen.
Nun könnte ich schalten in dem ich im WebFront manuell etwas eingebe.
Allerdings ein Schalter entsteht so nicht.
if (FS20_SwitchMode(12345, (boolean)$_IPS['VALUE'])) {
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}
Mir ist auch nicht klar auf was sich die 12345 beziehen sollte.
Weder Variable, noch Instanz sind damit offenbar gemeint, da kommt ein Fehler.
Auf was müsste sich dies beziehen?
Verstehe ich es richtig das ein Aa/Aus zurückgegeben wird (bzw. true/false) wenn der
Schalter betätigt wird und dies wird im Ergebnis der eigentlichen Schaltung als „Weitere Bedingung“
im auslösenden Ereignis hinterlegt?
Kam als Meldung:
Notice: Undefined index: VARIABLE in /var/lib/symcon/scripts/21782.ips.php on line 4
Notice: Undefined index: VALUE in /var/lib/symcon/scripts/21782.ips.php on line 4
Warning: Variable #0 existiert nicht in /var/lib/symcon/scripts/21782.ips.php on line 4
Was mach ich falsch?
(Umbennen würde ich alles noch vernünftiger)
Keine eigenen Aktion! Du willst ja nur die Variable schalten und kein Gerät. Einfach die Standardaktion nehmen. Da musst du auch nichts im Script anpassen. Und nimm als variablenprofil Switch
Super hat funktioniert, scheint alles gut zu laufen!!!
Gibt es eine Möglichkeit an den „Schalter“ eine „Restartzeit“ zu hängen?
Wird über den Schalter das Ergebnis Abgeschalten (inaktiv gesetzt) sollte dies selbstständig wieder
rückgängig gemacht werden nach z.B. 24 Std.
Am einfachsten geht es mit einer festen Uhrzeit z.B. Immer um 0.00 Uhr. Einfach ein Ereignis für die Variable erstellen. Wenn du es nach X Stunden haben willst musst du es wieder mit einem scripttimer machen. Wie beim Licht nach x Minuten aus…
Alternativ könnte auch das treppenhauslicht Modul funktionieren. Nur das es eben kein Licht schaltet sondern deine Variable.
Hab ich gebastelt, als Resetsteuerung.
Es gibt nun einen zusätzlichen Schalter Resetsteuerung, dieser wird im normalen WebFront nicht angezeigt.
Da ich viel unterwegs bin habe ich ein Admin-WebFront gebastelt in dem ALLE Geräte und Einstellungen sichtbar sind.
So kann meine Frau zur Not auch etwas schalten wenn ich nicht da bin und das Bedienungswebfront etwas nicht anzeigt.
Etwas wundert mich dann nun aber.
Beim Reset 4 Uhr Nachts ist ein grüner Haken das dieser aktiv ist, unter weitere Bedingungen steht aber blockiert.
Sollte wenn es blockiert ist statt des grünen Hakens nicht das gelbliche Kreuz sein?
Mit der Darstellung hast du vollkommen recht. Die sollte an beiden Stellen synchron sein. Welche Aussage war denn korrekt? Sollte das Ereignis blockiert sein oder nicht? Welchen Browser und welche Version von IP-Symcon verwendest du?