Problem mit Script zum ausschalten nach gewisser Zeit

Helmut du bist der PHP Gott nun läuft es DAAANNNNKKKKEEEE

Bitte ziehe mit der gedrückten linken Maustaste um den Inhalt Deines Scriptes , markiere es so und kopiere den Inhalt, dann machst Du hier ein Antwortfenster auf tastest kurz auf das klitzekleine PHP Icon und setzt zwischen die erscheinen PHP Buchstaben die Kopie des Scriptes rein, das ist viel besser lesbar

Und wenn Du kannst noch einmal Die IPS Baum mit den ID’s per Bildkopie :
Baum aufrufen, die entsprechenden Teile ausbreiten, Taste „Druck“ drücken, Paint aufrufen, einfügen, Ausschneiden was wichtig ist, Bild speicher und in der Antwort hier einbinden
Gruß Helmut

Edit Du hast es ja geschafft, ne, PHP ist nicht meine Stärke, nennt sich Erfahrung :wink:

 <?
  $Zustand= GetValueBoolean(54928 /*[EG\Licht\Licht Abstellraum\Status]*/);

 if($Zustand== true)
 {


 if($_IPS['SENDER'] == "TimerEvent")
 {
 //Aus Befehl
 ENO_SwitchMode(52293 /*[EG\Licht\Licht Abstellraum]*/, false);
 
 //Timer ausschalten
 IPS_SetScriptTimer($_IPS['SELF'], 0);
 } else {
 //An Befehl
 ENO_SwitchMode(52293 /*[EG\Licht\Licht Abstellraum]*/, true);

 //Timer anschalten
 IPS_SetScriptTimer($_IPS['SELF'], 300);
 }

 }

 ?>

Super, wenn Du das Script noch bisschen aufhübschen willst, dann musst Du noch einrücken von Schleifen und Leerzeilen löschen.

Grundsätzlich mußt Du bei Fragen, den aufgeklappten Baum mit dem Teil zeigen, den Du für die Frage wichtig erachtest.

Dann sind eine Kopie von den Ereignisse oder ein Bild vom Script mit angezeigten Ereignissen ganz gut.

Dann wird Dir auch geholfen, zumindest ist das eher möglich, meine Erfahrung, je öfter so eine Frage vorkommt, desto weniger wird von Denen geantwortet, die es wissen.

Oder erwarte es wenigstens nicht :wink:

Also Suchfunktion hier im Forum und noch besser per Goggel.

Gruß Helmut

Danke für die Übersicht. Jetzt wird klar, was schiefläuft:

  • das Event ist falsch: es sollte nur beim Einschalten (Grenze == true) zünden

  • da das Event aber auch beim Ausschalten zündet (Variablenänderung!) wird jetzt im Skript nachgebessert und auf Zustand == true geprüft :banghead:

  • was der An-Befehl

ENO_SwitchMode(52293 /*[EG\Licht\Licht Abstellraum]*/, true);

im Skript verloren hat, erschließt sich mir nicht:)

Gruß

Burkhard

Joo, Burkhard hat Recht, unnötig, liegt an Kopie und Pasta von mir. Ausschalten genügt
Gruß Helmut
Nachtrag für Burhard: Du schreibst

  • das Event ist falsch: es sollte nur beim Einschalten (Grenze == true) zünden
  • da das Event aber auch beim Ausschalten zündet (Variablenänderung!) wird jetzt im Skript nachgebessert und auf Zustand == true geprüft

Erster Satz, Diese Prüfung nicht von der Ereignissteuerung machen, lieber im Script.

Das Script wird von dem Ereignis der Variablenänderung nur einmal aufgerufen, während die Ereignissteuerung , wenn sie auf den Zustand „true“ prüft, immer wieder das Ereignis vorfindet.

Und mir erschließt sich nicht, warum im letzten Video die Statusvariable der EnOcean Instanz sekündlich aktualisiert wurde :confused: Kann da vielleicht noch jemand etwas zu sagen?

Im Video ist zu sehen, dass er nur bei bestimmtem Wert (TRUE) das Ereignis zündet. Daher verstehe ich auch nicht, was die Anpassung im Skript für einen Sinn hat.

Da könntest Du vom Entwickler eine Antwort bekommen, ich glaube, dass die Erkennung des Ereignis auf den festen Zustand true oder false eine Schleife ist, die immer vom System abläuft. Da sind ja auch mehrere Ereignisse möglich.

Mein Dünndenken, was hinten raus kommt zählt :wink:
Gruß Helmut

weil das Skript durch

ENO_SwitchMode(57275 /*[EG\Licht\Licht Technikraum]*/, true);

in einer Dauerschleife war :slight_smile:
Dadurch wurde die Lampe immer wieder eingeschaltet und demnach auch der Status aktualisiert. Wodurch das Skript wieder aufgerufen wurde …

Burkhard hat Recht, nur die Zeile mit dem Einschalter der Instanz führte dazu das die Ereignissteuerung auf „true“ immer wieder aufgerufen wurde.
Dieses Script müsste mit Ereignis auf true auch laufen, also ohne Auslesen des Status und der Abfrageschleife, teste mal:
Gruß Helmut

 
 <?
  if($_IPS['SENDER'] == "TimerEvent")
 {
 //Aus Befehl
 ENO_SwitchMode(52293 /*[EG\Licht\Licht Abstellraum]*/, false);
 
 //Timer ausschalten
 IPS_SetScriptTimer($_IPS['SELF'], 0);
 } else {
 //An Befehl
 // ENO_SwitchMode(52293 /*[EG\Licht\Licht Abstellraum]*/, true);

 //Timer anschalten
 IPS_SetScriptTimer($_IPS['SELF'], 300);
 }
 ?>   

Hi Helmut, danke dir werde ich bei Gelegenheit testen bin gerade noch am spielen mit der Google Home Steuerung :wink:

Hi Helmut danke nochmals dein letztes Script funktioniert auch wunderbar :slight_smile: