Ausschalttimer

ich würde es über $max machen.

Hallo Werner,

jetzt habe ich das mal so gemacht…löst aber immer noch nichts in den IF Abfragen aus :frowning:

<?

 $max = 180;
 $step = 1; //Schrittgröße
 $irtID = 19869 /*[Mein Haus\Multimedia\IRTrans LAN]*/; // ID vom IRTransvestitenmodul
 
 function on() {
   IPS_LogMessage("Eieruhr", "Aktiviert!");
 }
 function off(){
   

   IPS_LogMessage("Eieruhr", "Abgelaufen...");
   PJ_DimRGBW(41853 /*[Mein Haus\Wohnzimmer\Licht\LED Flatscreen]*/,0,2,0,2,0,2,0,2);
	HM_WriteValueFloat(58363 /*[Mein Haus\Wohnzimmer\Licht\Wandlampen]*/, "LEVEL", 0); // Wandlampen aus
	//SetValueInteger(11969 /*[Mein Haus\Multimedia\Hauptmenü\Rechts\Makros]*/,4);

   if (GetValueBoolean(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/) == TRUE)

	 {
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 IPS_Sleep (500);
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 SetValue(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/,FALSE);     // HTPC AUS
	 IPS_Sleep (3500);
	 }

    if (GetValueBoolean(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/) == TRUE)
   {
    IRT_SendOnce ($irtID,"topfield","on/off Toggle");
    SetValue(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/,FALSE);  //Topfield AUS
   }



   if (GetValueBoolean(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/) == TRUE)
   {
    IRT_SendOnce ($irtID,"samsungtv","on/off toggle");
    SetValue(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/,FALSE);       // TV AUS
   }



   if (GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/) == TRUE)

	 {
	 IRT_SendOnce ($irtID,"onkyo","on/off toggle");
	 SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,FALSE);     // Verstärker AUS
	 }

    else
	   {
	    // elsetest
      }


 }

//Ab hier nichts mehr verändern

und über $max habe ich es auch gerade probiert…

ich werd noch bekloppt hier :slight_smile:

Mach die mal unter die function off(){ rein.

Bin mir bei den verschiedenen PHP-Versionen nicht mehr sicher ob man ein global benötigt oder nicht. Wenn Du die Variable aber in der function off() definierst ist es erst einmal egal.

sieht nun so aus…geht leider auch nicht :frowning:

script wird aber nicht als fehlerhaft angezeigt…Licht geht nach wie vor nach einer minute aus…

<?
 
 $max = 180;
 $step = 1; //Schrittgröße
 
 
 function on() {
   IPS_LogMessage("Eieruhr", "Aktiviert!");
 }
 function off(){
   $irtID = 19869; // ID vom IRTransvestitenmodul

   IPS_LogMessage("Eieruhr", "Abgelaufen...");
   PJ_DimRGBW(41853 /*[Mein Haus\Wohnzimmer\Licht\LED Flatscreen]*/,0,2,0,2,0,2,0,2);
	HM_WriteValueFloat(58363 /*[Mein Haus\Wohnzimmer\Licht\Wandlampen]*/, "LEVEL", 0); // Wandlampen aus
	//SetValueInteger(11969 /*[Mein Haus\Multimedia\Hauptmenü\Rechts\Makros]*/,4);

   if (GetValueBoolean(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/) == TRUE)

	 {
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 IPS_Sleep (500);
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 SetValue(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/,FALSE);     // HTPC AUS
	 IPS_Sleep (3500);
	 }

Also sollte im Moment folgendes funktionieren.

  1. vergiss das wieder.
  2. Deine LED-Leisten ändern den Status
  3. Die Wandlampen gehen aus.

Falls oben alles mit ja beantwortet wird noch eine Frage von meiner Seite…

… deine HiFi-Komponenten sind an und die entsprechenden Variablen sind auch wirklich true?

zu allem JA mit einer einschränkung :

Der HTPC ist gerade aus…kann es sein, das die IF abfrage an der stelle „stehenbleibt“ ?

allerdings ist das alles aus meinem anderen script kopiert, in dem auch alles andere ausgeht, wenn der HTPC nicht an ist…also gleiche Bedingungen…

Danke für dein „Durchhaltevermögen“ :slight_smile:

Kein Problem.

Das der HTPC aus ist stellt kein Problem dar und dort bleibt das Skript auch nicht stehen.

Wenn dieser auf false steht überspringt er einfach den Teil bis zu } und macht dort weiter.

Im Moment bin ich mit meinem Latein auch am Ende.

Um sicherzugehen das es nicht an den if´s liegt würde ich diese inkl. den { } mal rauswerfen und dann die Eieruhr starten. Funktioniert es dann auch nicht so denke ich das ein Problem mit der irt-Instanz besteht.

Ich verabschiede mich dann für heute und vielleicht bekommst Du das Problem ja mit ein wenig Auszeit über die Nacht hin.

Für sowas kann man gut den IPSLogger verwenden und an den entsprechenden Stellen einfach was ins Log schreiben (also z.B. in der IF Abfrage). Damit sieht man dann schon mal gut, ob die Programmlogik funktioniert und man kann auch den Inhalt von Variablen mit schreiben.

ok…guter tip…ich habe gestern schonmal die ganzen IFs ausgeklammert…also dann funktioniert es…

Nachteil ist allerding, meine geräte müssen an sein…sind sie aus, und der „aus“ befehl kommt, wird alles eingeschaltet. (HIFI Komponenten haben ja meist einen Power Toggle…

Wie gesagt…im Originalscript laufen die IF abfragen perfekt…
Diesen habe ich weiter oben ja auch schon gepostet…

Ich bin mit meinem Latain am Ende (wobei das bei PhP auch nicht viel ist)

Danke für die ganze Hilfe…ich hoffe, wir kriegen das noch hin :slight_smile:

LG
Sascha

Dann muss es ja an der Abfrage selbst liegen. Also zuerst mal die in der Abfrage zu prüfende Variable lim Logger mitschreiben bzw mal prüfen, ob die auch wirklich auf TRUE steht, wenn die Geräte an sind. Was verbirgt sich denn hinter der Variablen

27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/

?

Aus diesem Grund wollte ich zu Beginn auch mal einen Screenshot der Console mit den entsprechenden Variablen haben.

Seltsam ist ja nur das bei ihm die selbe Bedingung mit dem anderen Skript läuft.

Ja, in meinem anderen Skript funktioniert es…

Auch wenn es jetzt etwas lang wird, aber ich poste hier einmal das originalskript, was wunderbar funktioniert…

unten danach dann mein „Eieruhr“ Skript, was die IF abfragen nicht macht…eventuell seht ihr ja im direkten vergleich etwas.

Den teil, den ich in das eieruhrskript kopiert habe, ist im originalskript unter „case 4“ zu finden…

Lieben Dank fürs helfen…ich komm da gerade alleine leider nicht weiter…

<?

if ($IPS_SENDER == "WebFront")
{
    SetValue($IPS_VARIABLE, $IPS_VALUE);
}

$irtID = 19869 /*[Mein Haus\Multimedia\IRTrans LAN]*/; // ID vom IRTransvestitenmodul

//$TopfieldPower = GetValueBoolean(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/);

//$OnkyoPower = GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/); // Statusabfrage ein, oder ausgeschaltet
//$OnkyoToggleTrue = SetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,true); // Variable in VISU auf True setzen
//$OnkyoToggleFalse = SetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,false); // Variable in VISU auf False setzen

//$OnkyoEingangStatus = GetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/); // Statusabfrage Eingänge
//$OnkyoEingang = 44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/; // Eingänge schalten


//$OnkyoAN = IRT_SendOnce ($irtID,"onkyo","on/off toggle"); SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,true);

//$OnkyoTuner = IRT_SendOnce($irtID,"onkyo","tuner");SetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/,3);
//$OnkyoHTPC = IRT_SendOnce($irtID,"onkyo","pc");
//$OnkyoTopfield = IRT_SendOnce($irtID,"onkyo","topfield");
//$OnkyoPS3 = IRT_SendOnce($irtID,"onkyo","ps3");




switch($IPS_VALUE) //Saugeile Methode (Made by RNW)
{
    case 0: // Alle Geräte, die zum Fernsehen nötig sind, einschalten
    
    //HM_WriteValueBoolean(53339 /*[Mein Haus\Studio\HQI-Lampe]*/,"STATE",true);

    if (GetValueBoolean(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/) == FALSE)
   {
    IRT_SendOnce ($irtID,"topfield","on/off Toggle");
    SetValue(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/,TRUE);  //Topfield AN
   }


   if (GetValueBoolean(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/) == FALSE)
   {
    IRT_SendOnce ($irtID,"samsungtv","on/off toggle");
    SetValue(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/,TRUE);       // TV AN
   }

   if (GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/) == FALSE)

	 {
	 IRT_SendOnce ($irtID,"onkyo","on/off toggle");
	 SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,TRUE);     // Verstärker AN
	 }

	if (GetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/) == 1)

	{
	 // Hol mir ein Bier
	}

	else
	{
	IPS_Sleep (3000);
   IRT_SendOnce($irtID,"onkyo","topfield");   // Eingang umschalten falls nötig
   SetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/,1); // Den Eingang auch in der VISU umschalten
   }


   if (GetValueInteger(59564 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Eingänge]*/) == 1)

   {
	 // och, eins würd ich noch nehmen....
   }

   else
   {
   IPS_Sleep (6000); // Fernseher muß erst ein wenig an sein, bevor ich den Eingang umschalten kann
   IRT_SendOnce($irtID,"samsungtv","topfield");  //Eingang umschalten
   SetValueInteger(59564 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Eingänge]*/,1);
   }
   WFC_SwitchPage ( 28869 /*[WebFront Configurator]*/, "item3548");
   break;



	 case 1: // HTPC und alles, was nötig ist, einschalten

	if (GetValueBoolean(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/) == FALSE)

	 {
	 IRT_SendOnce ($irtID,"htpc","poweron");        // HTPC AN
	 SetValue(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/,TRUE);
	 }



   if (GetValueBoolean(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/) == FALSE)
   {
    IRT_SendOnce ($irtID,"samsungtv","on/off toggle");
    SetValue(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/,TRUE);       // TV AN
   }

   if (GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/) == FALSE)

	 {
	 IRT_SendOnce ($irtID,"onkyo","on/off toggle");
	 SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,TRUE);     // Verstärker AN
	 }

	if (GetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/) == 0)

	{
	 // Hol mir ein Bier
	}

	else
	{
	IPS_Sleep (3000);
   IRT_SendOnce($irtID,"onkyo","pc");   // Eingang umschalten falls nötig
   SetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/,0); // Den Eingang auch in der VISU umschalten
   }


   if (GetValueInteger(59564 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Eingänge]*/) == 0)

   {
	 // och, eins würd ich noch nehmen....
   }

   else
   {
   IPS_Sleep (6000); // Fernseher muß erst ein wenig an sein, bevor ich den Eingang umschalten kann
   IRT_SendOnce($irtID,"samsungtv","pc/ps3");  //Eingang umschalten
   SetValueInteger(59564 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Eingänge]*/,0);
   }
   WFC_SwitchPage ( 28869 /*[WebFront Configurator]*/, "item2293");
    break;


    case 2:  // Alles für PS3 einschalten
    
    //HM_WriteValueBoolean(53339 /*[Mein Haus\Studio\HQI-Lampe]*/,"STATE",true);

   if (GetValueBoolean(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/) == FALSE)
   {
    IRT_SendOnce ($irtID,"samsungtv","on/off toggle");
    SetValue(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/,TRUE);       // TV AN
   }

   if (GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/) == FALSE)

	 {
	 IRT_SendOnce ($irtID,"onkyo","on/off toggle");
	 SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,TRUE);     // Verstärker AN
	 }

	if (GetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/) == 2)

	{
	 // Hol mir ein Bier
	}

	else
	{
	IPS_Sleep (3000);
   IRT_SendOnce($irtID,"onkyo","ps3");   // Eingang umschalten falls nötig
   SetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/,2); // Den Eingang auch in der VISU umschalten
   }


   if (GetValueInteger(59564 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Eingänge]*/) == 0)

   {
	 // och, eins würd ich noch nehmen....
   }

   else
   {
   IPS_Sleep (6000); // Fernseher muß erst ein wenig an sein, bevor ich den Eingang umschalten kann
   IRT_SendOnce($irtID,"samsungtv","pc/ps3");  //Eingang umschalten
   SetValueInteger(59564 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Eingänge]*/,0);
   }
   WFC_SwitchPage ( 28869 /*[WebFront Configurator]*/, "item4656");
    break;


    case 3:  // Squeezebox Touch einschalten
    
    $box_mac = "00:04:20:22:69:31";
    
    CSCK_SendText(41329 /*[Squeezboxserver]*/, $box_mac.' power 1'.chr(13));
    SetValue(50001 /*[Mein Haus\Multimedia\Geräte\Squeezebox Touch\Touch Rechts\Power]*/,TRUE);
    
    
    //HM_WriteValueBoolean(53339 /*[Mein Haus\Studio\HQI-Lampe]*/,"STATE",true);

    if (GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/) == FALSE)

	 {
	 IRT_SendOnce ($irtID,"onkyo","on/off toggle");
	 SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,TRUE);     // Verstärker EIN
	 }

	 if (GetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/) == 3)  //Eingang Checken

	{
	 // Ich werd noch bekloppt hier !!!!
	}

	else  // Eingang umschalten falls nötig
	{
	IPS_Sleep (3000);
   IRT_SendOnce($irtID,"onkyo","tape");   // Eingang umschalten falls nötig
   SetValueInteger(44260 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Eingänge]*/,3); // Den Eingang auch in der VISU umschalten
   }

	 WFC_SwitchPage ( 28869 /*[WebFront Configurator]*/, "item9547");  // Auf Squeezebox Touch WF Seite wechseln
    break;




    case 4: // Alles aus
    
    //$box_mac = "00:04:20:22:69:31";
    
    //CSCK_SendText(41329 /*[Squeezboxserver]*/, $box_mac.' power 0'.chr(13));
    //SetValue(50001 /*[Mein Haus\Multimedia\Geräte\Squeezebox Touch\Touch Rechts\Power]*/,FALSE);
    
    //HM_WriteValueBoolean(53339 /*[Mein Haus\Studio\HQI-Lampe]*/,"STATE",false);
    
    if (GetValueBoolean(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/) == TRUE)

	 {
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 IPS_Sleep (500);
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 SetValue(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/,FALSE);     // HTPC AUS
	 IPS_Sleep (3500);
	 }

    if (GetValueBoolean(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/) == TRUE)
   {
    IRT_SendOnce ($irtID,"topfield","on/off Toggle");
    SetValue(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/,FALSE);  //Topfield AUS
   }



   if (GetValueBoolean(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/) == TRUE)
   {
    IRT_SendOnce ($irtID,"samsungtv","on/off toggle");
    SetValue(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/,FALSE);       // TV AUS
   }



   if (GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/) == TRUE)

	 {
	 IRT_SendOnce ($irtID,"onkyo","on/off toggle");
	 SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,FALSE);     // Verstärker AUS
	 }



	


   break;
}

?>

und nun das Eieruhrskript :

<?
 
 $max = 180;
 $step = 15; //Schrittgröße
 
 
 function on() {
   IPS_LogMessage("Eieruhr", "Aktiviert!");
 }
 function off(){
   $irtID = 19869 /*[Mein Haus\Multimedia\IRTrans LAN]*/; // ID vom IRTransvestitenmodul

   IPS_LogMessage("Eieruhr", "Abgelaufen...");
   PJ_DimRGBW(41853 /*[Mein Haus\Wohnzimmer\Licht\LED Flatscreen]*/,0,2,0,2,0,2,0,2);
	HM_WriteValueFloat(58363 /*[Mein Haus\Wohnzimmer\Licht\Wandlampen]*/, "LEVEL", 0); // Wandlampen aus
	SetValueInteger(11969 /*[Mein Haus\Multimedia\Hauptmenü\Rechts\Makros]*/,4);

   if (GetValueBoolean(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/) == TRUE)

	 {
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 IPS_Sleep (500);
	 IRT_SendOnce ($irtID,"htpc","poweroff");
	 SetValue(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/,FALSE);     // HTPC AUS
	 IPS_Sleep (3500);
	 }

    if (GetValueBoolean(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/) == TRUE)
   {
    IRT_SendOnce ($irtID,"topfield","on/off Toggle");
    SetValue(32565 /*[Mein Haus\Multimedia\Geräte\Topfield\Topfield 2\Power Topfield]*/,FALSE);  //Topfield AUS
   }



   if (GetValueBoolean(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/) == TRUE)
   {
    IRT_SendOnce ($irtID,"samsungtv","on/off toggle");
    SetValue(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/,FALSE);       // TV AUS
   }



   if (GetValueBoolean(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/) == TRUE)

	 {
	 IRT_SendOnce ($irtID,"onkyo","on/off toggle");
	 SetValue(22791 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Power Verstärker]*/,FALSE);     // Verstärker AUS
	 }




 }

//Ab hier nichts mehr verändern
 $min = 0;
 $suffix = "min";
 $vpn = "EggTimer.".$max.".".$step;
 if($IPS_SENDER == "Execute")
 {
   if(IPS_VariableProfileExists($vpn))
        IPS_DeleteVariableProfile($vpn);
    IPS_CreateVariableProfile($vpn, 1);
    IPS_SetVariableProfileValues($vpn, $min, $max, 0);
    IPS_SetVariableProfileIcon($vpn, "Clock");
    IPS_SetVariableProfileAssociationEx($vpn, $min-2, "Aus", "", 0xFF0000);
    IPS_SetVariableProfileAssociationEx($vpn, $min-1, "-", "", -1);
    IPS_SetVariableProfileAssociationEx($vpn, $min, "%d ".$suffix, "", 0x00FF00);
    IPS_SetVariableProfileAssociationEx($vpn, $max+1, "+", "", -1);
   $vid = CreateParentVariable($IPS_SELF, "Timer", 1);
   IPS_SetVariableCustomProfile($vid, $vpn);
   IPS_SetVariableCustomAction($vid, $IPS_SELF);
   SetValue($vid, $min-2);
 }
 else if($IPS_SENDER == "WebFront")
 {
        switch($IPS_VALUE)
        {
           case $min-2:
              doOff();
              break;
           case $min-1:
              $IPS_VALUE = GetValue($IPS_VARIABLE) - $step;
              if($IPS_VALUE <= 0)
              {
                    $IPS_VALUE = -2;
                    doOff();
              }
              break;
           case $max+1:
              $IPS_VALUE = min($max, max(0, GetValue($IPS_VARIABLE)) + $step);
             doOn();
             break;
            default:
                return;
        }
      SetValue($IPS_VARIABLE, $IPS_VALUE);
 }
 else if($IPS_SENDER == "TimerEvent")
 {
   $vid = CreateParentVariable($IPS_SELF, "Timer", 1);
    $v = GetValue($vid);
    $v--;
    if($v <= 0)
    {
       doOff();
        IPS_SetScriptTimer($IPS_SELF, 0);
        $v = $min-2;
    }
    SetValue($vid, $v);
 }

function doOn()
{
   global $IPS_SELF;
    if(IPS_GetScriptTimer($IPS_SELF) == 0)
    {
        IPS_SetScriptTimer($IPS_SELF, 60);
        on();
    }
}

function doOff()
{
   global $IPS_SELF;
    IPS_SetScriptTimer($IPS_SELF, 0);
    off();
}

function CreateParentVariable($id, $name, $type)
{
    global $IPS_SELF;
    $vid = IPS_GetParent($IPS_SELF);
     if(!IPS_VariableExists($vid))
     {
         $vid = false;
     }
     else
     {
       $v = IPS_GetVariable($vid);
       if($v['VariableValue']['ValueType'] != $type)
          $vid = false;
     }
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, IPS_GetParent($IPS_SELF));
        IPS_SetParent($id, $vid);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        IPS_SetHidden($id, true);
    }
    return $vid;
}

function IPS_SetVariableProfileAssociationEx($vpn, $av, $an, $ai, $ac)
{
    if(floatval(IPS_GetKernelVersion()) <= 2.3)
    {
        IPS_SetVariableProfileAssociation($vpn, $av, $an, $ai);
    } else {
        IPS_SetVariableProfileAssociation($vpn, $av, $an, $ai, $ac);
    }
}

?>

Kann der SASCHA erklären warum er in dem Script 2 Funktionen (on(), off()) geschrieben hat???

Ich kann mir nicht ganz vorstellen wofür das sein soll, und wie wird das aufgerufen???

Sollte hier nicht die Fkt. selbst „off()“ aufgerufen werden, passiert hier natürlich gar nichts.

lg
Marco

ah, ich seh schon, das kommt erst weiter unten im Script.

Versuch doch mal ein if in ein extra Script zu packen und dann das zu starten.

z.B. das hier

if (GetValueBoolean(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/) == TRUE)

     {
     IRT_SendOnce ($irtID,"htpc","poweroff");
     IPS_Sleep (500);
     IRT_SendOnce ($irtID,"htpc","poweroff");
     SetValue(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/,FALSE);     // HTPC AUS
     IPS_Sleep (3500);
     } 

packst du in ein komplett eigenes Script.

Die habe ich nicht geschrieben, die kamen aus dem original eieruhr skript (suche benutzen, stichwort „Eieruhr“)

Das habe ich als basis benutzt…genauergesagt, nur bei der funktion „OFF“ mein glimbatsch eingefügt, was bei abgelaufenen Timer passieren soll…

ok…das kann ich probieren (mach ich sofort)

wie muß denn die Zeile im Eieruhrskript aussehen, womit ich das externe skript starte ?

Liebe Dank für den Lösungsansatz

ich würde sagen:

  1. irgendwo im Baum: Objekt hinzufügen --> Script hinzufügen
  2. einen Namen beliebig vergeben (ich nehme hier z.B. Test)
  3. weiterklicken, und mit OK das Script anlegen.
  4. in dieses neue Script kopierst du einen Teil deiner if Abfragen.
  5. das sollte dann so aussehen:
<?
if (GetValueBoolean(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/) == TRUE)
{
     IRT_SendOnce ($irtID,"htpc","poweroff");
     IPS_Sleep (500);
     IRT_SendOnce ($irtID,"htpc","poweroff");
     SetValue(27858 /*[Mein Haus\Multimedia\Geräte\HTPC\HTPC Rechts\Power HTPC]*/,FALSE);     // HTPC AUS
     IPS_Sleep (3500);
     echo "Fkt. erfolgreich ausgeführt";
}
?>
  1. starten des Scriptes über „Ausführen“, rechts oben im Scriptfenster.

wenn du alles richtig gemacht hast, müsste im Ausgabefenster die Meldung „Fkt. erfolgreich ausgeführt“ stehen.
Wenn dem so ist, ist die Abfrage zumindest richtig und es liegt das Problem wo anders.:confused:

<?

  $irtID = 19869 /*[Mein Haus\Multimedia\IRTrans LAN]*/; // ID vom IRTransvestitenmodul



    if (GetValueBoolean(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/) == TRUE)
   {
    IRT_SendOnce ($irtID,"samsungtv","on/off toggle");
    SetValue(12908 /*[Mein Haus\Multimedia\Geräte\Samsung TV\TV Rechts\Power TV]*/,FALSE);       // TV AUS


     echo "Fkt. erfolgreich ausgeführt";
   }
?>

So hat das jetzt funktioniert :slight_smile:

Die Frage wäre nun, ob ich aus dem Eieruhrskript das neue Testskript von eben starten kann ?

Dann habe ich eben ein extraskript, was mir alles ausschaltet…

Also so in der Form

Eieruhr abgelaufen startet externes skript XYZ