Vom Timer gestartet und noch ein Timer drinnen

Hallo Leuts,

ich hab mich als Skript Dummi mal wieder an eines gewagt:rolleyes:
Ich hab schon gemerkt warum es nicht geht, hab aber leider keine Löung.

Also, es werden Skripte mit Hilfe des Astroskriptes gestartet. Dieses setzt jede nacht für jedes Skript neue Timer…siehe hier…

Nur habe ich das Problem das ich in meinem Skript auch einen Timer habe mit der Abfrage " wurde durch Timer gestartet? ". Ja, natürlich immer, vom Astrotimer.

<?

// macht den Wochentag 0=Sonntag..6=Samstag nach $Tag
$Tag = Date("w");


//echo $Tag;

      if       ($Tag == 2)
		{
 				if($IPS_SENDER == "TimerEvent") //wenn vom Timer gestartet dann...
 				{
  					//Aus Befehl

						// Rolladen Lena stop
			 			ModBus_WriteCoil(34627 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
			 			ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
			 			IPS_Sleep (400);
			 			ModBus_WriteCoil(34627 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
			 			ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);



  				//Timer ausschalten
  				IPS_SetScriptTimer($IPS_SELF, 0);
 				}
				 else {                       //...sonst das...
  					//An Befehl

						// Rolladen Lena runter
			 			ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
			 			IPS_Sleep (400);
			 			ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);


  		//Timer anschalten...
  			IPS_SetScriptTimer($IPS_SELF, 17);  //...mit Laufzeit in sek.
 						}

		}

?>

In diesem Fall hier, soll der Rolladen nach 17sek. stoppen. Per Hand gestartet alles OK. Per Astrotimer nicht:(
Wie mache ich denn nun die Unterscheidung, dass bei der TimerEvent Abfrage der 17sek. Timer gemeint ist?

Danke und Gruß

Jan

mit einem Event.

if($_IPS['EVENT'] == ID deines Timer) { //mach was }

Danke, habs nun so eingebaut und… …geht nicht:o

Hab ich´s falsch reingestrickt?

<?


// macht den Wochentag 0=Sonntag..6=Samstag nach $Tag
$Tag = Date("w");


//echo $Tag;

      if       ($Tag == 2)
		{
 				if($_IPS['EVENT'] == 44312)   //wenn vom Timer 44312 gestartet dann...
 				{
  					//Aus Befehl

						// Rolladen Lena stop
			 			ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
			 			IPS_Sleep (400);
			 			ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);



  				//Timer ausschalten
  				IPS_SetScriptTimer($IPS_SELF, 0);
 				}
				 else {                       //...sonst das...
  					//An Befehl

						// Rolladen Lena runter
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
			 			IPS_Sleep (400);
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);


  		//Timer anschalten...
  			IPS_SetScriptTimer($IPS_SELF, 9);  //...mit Laufzeit in sek.
 						}

		}


?>

Gruß

Jan

if($IPS_SENDER == "TimerEvent") //wenn vom Timer gestartet dann... 

den hast vergessen.

Ohhh neeee… ich raffs nich. Du hilfst mir nun so schnell und geduldig, aber mir gleiten nu langsam die letzten Hirnzellen wech.
Das Skript wird wieder ohne Fehlermarkierung durchgeführt, aber halt nich wie soll. Würdest Du noch mal bitte…

<?


// macht den Wochentag 0=Sonntag..6=Samstag nach $Tag
$Tag = Date("w");


//echo $Tag;

      if       ($Tag == 2)
		{
         if($IPS_SENDER == "TimerEvent") //wenn vom Timer gestartet dann...
			 {
 				if($_IPS['EVENT'] == 44312)   //wenn vom Timer 44312 gestartet dann...
 				{
  					//Aus Befehl

						// Rolladen Lena stop
			 			ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
			 			IPS_Sleep (400);
			 			ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);



  				//Timer ausschalten
  				IPS_SetScriptTimer($IPS_SELF, 0);
 				}
 			}
				 else {                       //...sonst das...
  					//An Befehl

						// Rolladen Lena runter
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
			 			IPS_Sleep (400);
			 			ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);


  		//Timer anschalten...
  			IPS_SetScriptTimer($IPS_SELF, 9);  //...mit Laufzeit in sek.
 						}


		}


?>

Danke!

Hallo Jan,

wenn ich dich nicht ganz falsch verstanden habe…

Der Astrotimer startet und setzt den Scripttimer auf 17sec.

<?

switch($_IPS['SENDER'])
{
   case "TimerEvent":
   if(date("w") == 3) // macht den Wochentag 0=Sonntag..6=Samstag
   {
       if($_IPS['EVENT'] == 44312) // ID des Scripttimer
       {
          // Rolladen Lena stop
          ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
          ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
          IPS_Sleep (400);
          ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
          ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
      
          //Timer ausschalten
          IPS_SetScriptTimer($_IPS['SELF'], 0);
        }
        if($_IPS['EVENT'] == 47121) // ID des Astrotimer
        {
           // Rolladen Lena runter
          ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
          IPS_Sleep (400);
          ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);

            //Timer anschalten...
          IPS_SetScriptTimer($_IPS['SELF'], 17);  //...mit Laufzeit in sek.
        }
    }
   break;
}

?>

Möönsch, es läuft… :slight_smile:

Danke für die Hilfe!

Auf dies „switch - case“ wär ich nicht gekommen.

Gruß

Jan