Verschiedene Timer Events in einem Skript je nachdem wer das Skript startet .

Hallo …
Ich braue mal Hilfe …

Bei meinem Skript startet das Klingeln an der Haustür dieses Skript und setzt den Timer auf 40 sek.
Bei mir auf dem Android Tab öffnet sich dann die Cam Software und zeigt mir die Haustür.
Daneben dann eine Szene vom Tasker mit einem Button zum Tür öffnen.

Nach Ablauf der 40 sek. schließt sich die Cam Software und der Tasker Button.

Wenn ich jetzt aber den Button vor den 40 sek. drücke und der Befehl über terRemote in eine String Variable geschrieben wird, löst das dann wiederum das Skript aus und soll den Timer auf 10 sek. setzen.

Wie mache ich es das das Skript erkennt woher der Befehl kommt ??:confused:


<?


if($_IPS['SENDER'] == "TimerEvent"){
IPS_SetScriptTimer(17300  /*[Geräte\Andrid Yvonne\Cam aus und an]*/, 0);
IPS_RunScript(40187  /*[Geräte\Andrid Yvonne\Cam Haustür aus]*/);
}

elseif($_IPS['SENDER'] == "?????????"){
IPS_SetScriptTimer(17300  /*[Geräte\Andrid Yvonne\Cam aus und an]*/, 10);

}


else{
IPS_SetScriptTimer(17300  /*[Geräte\Andrid Yvonne\Cam aus und an]*/, 40);
IPS_RunScript(49675  /*[Geräte\Andrid Yvonne\Cam aus und an\Cam Haustür an]*/);
}

?>

Gruß Holger

Du kannst die Timer schon vorab anlegen (also nicht Script Timer benutzen) und diesen Timern einen expliziten Namen geben.

Im Script kannst die Namen abfragen.

In diesem Script findest alles was du brauchst.
greez
bb

{

$myId= 16699 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri]*/;

$Sensor = "";
Switch ($_IPS['SENDER'])
	{
	Default:
	   break;

	Case "RunScript":
   	   break;
	Case "Execute":
      echo "Execute";
      
	   break;


	Case "Variable":
         $Sensor = IPS_GetName($IPS_VARIABLE);
			$Sensor = IPS_GetName(IPS_GetParent($IPS_VARIABLE))."_".$Sensor;
			echo $Sensor;
			break;
	Case "Execute":

	Case "TimerEvent":
         $Sensor = IPS_GetName($_IPS['EVENT']);
			echo $Sensor;
		 	$TimerId = (IPS_GetObjectIDByName($Sensor, $myId));
			break;
	};

Switch ($Sensor)
	{
// --------- Flur EG------------------

	Case "Bewegungssensor_EG_Status":
 //     If (GetValueBoolean(23751 /*[Wandschalter\Schalter_Haustüre\Taste1]*/) == false) {

		  FS20_SwitchDuration(36849 /*[Licht\Flur Erdgeschoß]*/,true,120);
	     myStartTimer(30138 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
	  
	//TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 2, true);
			SetValueInteger(58697 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\Helligkeit]*/,100);
			SetValueInteger(43676 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\DimTime]*/,20);
			IPS_RunScript(12817 /*[Räume\Flur\Weinregal\Scripte\random]*/);
			IPS_RunScriptEx(28613 /*[Räume\Flur\Weinregal\Scripte\Set_RGB]*/,Array("ChromoflexMode" => 0.0)); //Chromoflex setzen
//			}
			break;
      Case "Timer_Flur1":
         IPS_SetEventActive(30138 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
          // FS20_SetIntensity(36849 /*[Licht\Flur Erdgeschoß]*/,0,15);
         FS20_SwitchMode(36849 /*[Licht\Flur Erdgeschoß]*/, false);
			IPS_RunScript(12817 /*[Räume\Flur\Weinregal\Scripte\random]*/);
			SetValueInteger(43676 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\DimTime]*/,20);
			SetValueInteger(58697 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\Helligkeit]*/,5);
			IPS_RunScriptEx(28613 /*[Räume\Flur\Weinregal\Scripte\Set_RGB]*/,Array("ChromoflexMode" => 0.0)); //Chromoflex setzen
			break;


// --------- Flur OG------------------
	Case "Bewegungssensor_OG_Status":
         if (GetValue(22388 /*[Garten\Helligkeit]*/) <10) {
				FS20_SwitchDuration(50986 /*[Licht\Flur Obergeschoß]*/,true,60);
   	      FS20_SwitchDuration(36849 /*[Licht\Flur Erdgeschoß]*/,true,120);
      	   myStartTimer(16999 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
			}
			break;
   Case "Timer_OG1":
			IPS_SetEventActive(16999 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
	      // FS20_SetIntensity(50986 /*[Licht\Flur Obergeschoß]*/,0,15);
         FS20_SwitchMode(50986 /*[Licht\Flur Obergeschoß]*/, false);
			break;


// --------- Toilette------------------
	Case "Bewegungssensor_Toilette_Status":
         TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 5, true);
         myStartTimer(49718 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
         IPS_SetEventCyclicTimeBounds(49718 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,time(),0);
			break;
    Case "Timer_Toilette1":
			TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 5, false);
         IPS_SetEventActive(49718 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
			break;

// --------- Kellerstiege------------------
   Case "Bewegungssensor_Kellerstiege_Status":
         TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 7, true);
         myStartTimer(45818 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
			break;
   Case "Timer_Kellerstiege1":
         TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 7, false);
         IPS_SetEventActive(45818 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
			break;

// --------- Keller------------------
   Case "Bewegungssensor_UG_Status":
			if (GetValueBoolean(17090 /*[Licht\ZK_Relaisgruppe\Licht Keller]*/) <>1) {
				TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 3, true);
         	myStartTimer(38895 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
         }
			break;
   Case "Timer_Keller1":
         TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 3, false);
         IPS_SetEventActive(38895 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
			break;

// --------- Terrasse------------------
   Case "Bewegungssensor_Terrasse_Status":
			if (GetValueBoolean(52664 /*[Licht\Terrasse\Status]*/) <> 1 && GetValue(22388 /*[Garten\Helligkeit]*/) <10) {
				FS20_SwitchDuration(27796 /*[Licht\Terrasse]*/,true,60);
		   	FS20_SwitchDuration(14090 /*[Licht\Geräteschuppen Eingang]*/,true,60);
	      	myStartTimer(35032 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
	      }
			break;
   Case "Timer_Terrasse1":
         FS20_SwitchMode(27796 /*[Licht\Terrasse]*/,false);
		   FS20_SwitchMode(14090 /*[Licht\Geräteschuppen Eingang]*/,false);
	      IPS_SetEventActive(35032 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
			break;

// --------- Parkplatz ------------------
   Case "Bewegungssensor_Parkplatz_Status":
			if (GetValueBoolean(57684 /*[Licht\ZK_Relaisgruppe\Außenbeleuchtung]*/)<> 1 && GetValue(22388 /*[Garten\Helligkeit]*/) <10) {
       		myStartTimer(48893 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
		   	TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 0, true);
			}
        	break;
   Case "Timer_Parkplatz1":
         TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 0, false);
         IPS_SetEventActive(48893 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
			break;


	}
};


function myStartTimer($dev) {
	IPS_SetEventActive($dev,false);
	IPS_SetEventCyclicTimeBounds($dev,time(),0);
	IPS_SetEventActive($dev,true);
}




/***************************************************************************
* Function: myToggleFS20
* Description: Diese Funktion Toggelt Einen FS20 Switch

* Parameter: - $objid (ObjektID)
***************************************************************************/

function myToggleFS20($dev){

	If (myGetObjectVariable($dev,'Status') == true) {
		FS20_SwitchMode($dev, false);
		}
	else {
		FS20_SwitchMode($dev, true);
		}
}

/***************************************************************************
* Function: MY_ObjectVariable
* Description: Diese Funktion gibt den Wert einer Variablen eines Objektes
*              zurück. Zum Beispiel den Wert MOTION des Devices PIRI.
*
* Parameter: - $objid (ObjektID)
*            - $variable (Name der Variablen)
* Return: - Wert der Variablen
*
***************************************************************************/
function myGetObjectVariable($objid, $variable)
{
    $obj = IPS_GetObject($objid);

    foreach ( $obj['ChildrenIDs'] as $item )
    {
       if ( IPS_GetName($item) == $variable )
       {
            return GetValue($item);
       }
    }
    return null;
}


?>

Hallo bbernhard …

Ich habe es erstmal mit 2 Scripte gelöst …

Dein Skript ist mir leider zu unverständlich weil ich nicht fit bin in PHP.
Ich behelfe mich immer mit Scripte aus dem Forum und dem Handbuch „PHP für Dummies“. :smiley:

Hast Du vielleicht ein etwas kleineres Skript mit Beschreibung für Dummies zur Hand.

Gruß Holger


if($_IPS['SENDER'] == "TimerEvent") // Wenn das Skript über ein zyklisches Ereignis gestartet wurde
{
	$TEventName = IPS_GetName($_IPS['EVENT']);
	
	Switch ($TEventName) 
	{
		case 'TimerName1':
			// Script wurde vom zyklischen Ereignis mit den Namen 'TimerName1' aufgerufen 
		break; 
		case 'TimerName2':
			// Script wurde vom zyklischen Ereignis mit den Namen 'TimerName2' aufgerufen  
		break; 	
	}
} 

http://www.ip-symcon.de/service/dokumentation/konzepte/skripte/systemvariablen/