Anfangsschwirigkeiten beim Script

Das steht doch hier:


if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl
    ...
 
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} elseif (//hier deine Bedingungen einfügen, die erfüllt sein müssen, damit die lampe angeht oder weitere 10 sek anbleibt.) {
    //An Befehl
    ...
 
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 10);
}


Sry wenn falls ich für verwirrung sorge, "zuviele Köche … " sonst einfach überlesen.

Die Abfrage ist überflüssig weil sie das Gegenteil von dem ist was Du oben prüfst. Wenn einer der Bewegungsmelder an ist und es Nacht ist … ansonsten …
es reicht also das ganze if … durch ein else zu ersetzten

Hallo,

huh das hat ja funktioniert so wie ich das kurz sehen könnte.

Ich bedanke mich ganz herzlich bei euch!!! Danke :slight_smile:

So sieht es aus:

$bm1=GetValue(24711 /*[Erdgeschoß\Treppenhaus\PIR am Eingangstür\Status]*/);
$bm2=GetValue(43814 /*[Erdgeschoß\Treppenhaus\PIR Oben Treppenhaus\Status]*/);
$bm3=GetValue(40604 /*[Erdgeschoß\Treppenhaus\PIR unten am Bad\Status]*/);


if($_IPS['SENDER'] == "TimerEvent")
{
		$wert=0;
		$jsontemp="PWM,15,$wert,1000"; 
		mqttsenden($remoteabo,$jsontemp);
    	IPS_SetScriptTimer($_IPS['SELF'], 0);
} elseif (($bm1 === true or $bm2 === true or $bm3 === true) and (GetValue(33461 /*[Location\Ist es Tag]*/) === false))
{
		($_IPS['SENDER'] == "TimerEvent");
        $wert=310;
        $jsontemp="PWM,15,$wert,1000"; 
        mqttsenden($remoteabo,$jsontemp);
    	IPS_SetScriptTimer($_IPS['SELF'], 30);
}  
?>

Huh die erste kleine Hürde des Skrips dank euch ist geschafft!

Edit: Funktioniert leider doch noch nicht. Hmmm

Ah war zu viel drin:

($_IPS[‚SENDER‘] == „TimerEvent“);

Mal testen

EDIT 2:

Geht leider auch nicht. 1 Pir bleibt auf true, der 2 geht auf false und macht dann nach timer aus,
obwohl Pir 1 noch auf true steht.

Gruß

script sieht erstmal ok aus, hast du die Auslöser geprüft?

Die TimerEvent-Abfrage war OK!!

Tja, DAFÜR ist dein Script ja auch gar nicht gebaut :wink:
Nur das EINSCHALTEN des PIR löst (einmalig) einen Timer aus, solange es kein „Update“ durch den PIR gibt wird trotzdem dein Licht ausgehen! Um das zu ändern müsstest du beim Ausschalten vorher prüfen ob ein PIR immer noch auf true ist und wenn dem so ist den Timer einfach verlängern… Das ist jetzt deine Hausaufgaben :stuck_out_tongue:

Hallo,

im wie fern geprüft? Die sehe ich ja im IPS und ändere diese bei bedarf über die Konsole.
Es funktioniert irgendwie sporadisch. Also geht einer der Pirs auf false obwohl andere auf true
stehen macht er das Licht nach 10 Sec auf. Also der Timer läuft denke ich mal.

Muss da nicht bei dem Aubefehl noch die Pirs mit false eingetragen werden.
Damit das Ausbefehl erst ausgelöst wird wenn alle Pir´s auf false stehen?

Also so funktioniert es schon mal besser ( nach einen sehr kurzen Test):

if(($_IPS['SENDER'] == "TimerEvent") && ($bm1 === false && $bm2 === false && $bm3 === false)) 
{
		$wert=0;
		$jsontemp="PWM,15,$wert,1000"; 
		mqttsenden($remoteabo,$jsontemp);
    	IPS_SetScriptTimer($_IPS['SELF'], 0);
} elseif (($bm1 === true or $bm2 === true or $bm3 === true) and (GetValue(33461 /*[Location\Ist es Tag]*/) === false))
{
        $wert=310;
        $jsontemp="PWM,15,$wert,1000"; 
        mqttsenden($remoteabo,$jsontemp);
    	IPS_SetScriptTimer($_IPS['SELF'], 10);
}  

Danke euch noch mal!!!

WENN das Script bei jeder Veränderung der Statusvariable irgendeines PIR gestartet wird, wird es aktuell beim ersten PIR angehen und bei jeder Veränderung wieder auf 10 Sekunden neu gestartet. Wenn du also zwischen 2 PIR hin und her läufst mit 10 Sekunden abstand, müsste das Licht an bleiben :wink: aber nur wenn dein PIR wirklich so schnell eine Bewegung meldet… die meisten tun das eher nicht…

und deine Veränderung oben veränder gar nichts :wink:

Hallo,

ja danke für die Tipps.

Wie verändert diese nichts? Seit dem läuft es aber… Komisch
Er wartet immer brav bis alle Pirs auf false stehen.

Die 10 sek sind erst mal zum testen da. Ist eh auch nur ein kleiner
Treppenhaus.
So soll es auch funktionieren.

Nur überlege ich gerade, woran es liegen kann das das Licht
erst nach 1-2 sec angeht wenn ein PIR auslöste.
Auch wenn am Handy auf der Webfront Bewegung erkannt wird,
dauert es manchmal ne Sekunde bis das Licht angeht.

Alles läuft über MQTT und ESP32 Easy .

Gruß

Guten Morgen,

hab es noch mal getestet wenn es so ist:

if($_IPS['SENDER'] == "TimerEvent") 

Funktioniert alles im durcheinander.

So aber läufts, oder übersehe ich da wieder was?:

if(($_IPS['SENDER'] == "TimerEvent") && ($bm1 === false && $bm2 === false && $bm3 === false))

Das Problem besteht leider auch noch das es sehr träge manchmal reagiert.

Gruß

ja, das hilft… wenn ich aber auch glaube von dir ungewollt…

durch deine zusätzliche If-ABfrage wird bewirkt das der Timer nicht gelöscht wird, wenn noch ein PIR auf true steht, der Timer wiederholt sich dann und wiederholt sich… so lange bis alle PIR auf false stehen , von daher hilft es…

Hallo,

ach so ist das. Vielen Dank für die Erklärung!

Wie wäre es dann richtig gewesen?
Oder muss man jeden Pir einzeln auf Timer setzen?

Gruß

Es gibt kein richtig oder falsch solange es funktioniert :wink:

Ich habe eine ähnliche Konstellation und habe es anders gemacht, aber auch weil ich manuell beim Lichtschalter eingreifen will, also wenn ich von Hand das Licht an mache soll der PIR es mir nicht ausmachen usw… das wäre damit jetzt nicht gegangen, aber wenn es deinen Bedarf erfüllt ist es richtig…

Hallo,

ah danke Dir für die Antwort!

Es geht jetzt auch nicht für die richtige Beleuchtung im Treppenhaus,
sondern es sind die Treppenstufen. Eigentlich soll da noch etwas mehr Funktionalität rein kommen.
Dies kommt es nach dem die Reaktionszeit sich gebessert hat.
Wenn euch dies aber interessiert, könnte ich es beschreiben was alles IPS tun soll nur
bei den Treppenstufen…

Habt Ihr vielleicht ne Idee woran es liegen kann, das es erst nach paar Sekunden
manchmal das Licht erst an geht?

Gruß

Ich tippe auf eine Verzögerung durch mqtt, meine tasmota sind auch nicht die schnellsten in der Reaktion beim schalten

Hallo,

danke für die Antwort ja das hab ich auch befürchtet. Muss mal schauen
was man da machen kann. Esp Easy gibt leider für jedes Gerät ein eigenes Topic.
Vielleicht wäre es ja besser alle Geräte in eines zu packen.

Da im Abstellraum auch eine Leuchte über MQTT angesteuert wird,
diese reagierte auch etwas verzögert. Nach den Skript aus diesem Thema ist
es auch deutlich langsamer geworden.

Versuche gerade auch S20er mit Tasmota zu beschreiben. Arduino IDE streikt noch hier und da.

Gruß

Hallo,

noch mal ne kleine Frage.
Wie könnte ich noch die selbe Leuchte die schon da durch gesteuert wird,
noch mal wie nach Zeitschaltuhr auf 10% leuchten lassen?
Aber unter ein paar weiteren Bedingungen auch, z.B. es ist kein Tag und ein Schalter im IPS auf true.

Danke schon mal.

PS: gestern reagierte alles schneller irgendwie. Vielleicht muss ich mal alles neu starten.

Gruß