Brauche Hilfe bei einem Piri-Script

Hi,

mein verdamm… Piri will einfach nicht so, wie ich will. Kann mir jemand bei einem Script analog dem von pleibling: http://www.ipsymcon.de/forum/showthread.php?t=1362&page=2&highlight=piri helfen?

Ich habe einen Piri, der steuert die Variable „WZ_Beweg.Status“. Dieser soll eine Lampe mit Variable „testhalber: AZ_FS_Ambiente.Status“ schalten. Gleichzeitig tut dies auch der Taster mit der Variable „WZ_TA_Taste1.Status“. Die sunrise/sunset-Variable lautet „Ist_Tag“.

Ich möchte gerne, dass der Piri reagiert, wenn „Ist_Tag“ auf false steht und die Leuchte „AZ_FS_Ambiente.Status“ nicht manuell über den Taster „WZ_TA_Taste1“ auf true geschaltet wurde. Dann soll die Variable „AZ_FS_Ambiente.Status“ für vier Minuten auf true wechseln und ausschalten. Danach soll die Piri-Vaiable „WZ_Beweg.Status“ wieder auf false wechseln und auf Bewegung „lauschen“.

Ich hoffe, ihr versteht was ich realisieren möchte. Ich beiss mir hier die Zähne aus.

Bitte um Hilfestellung, meine Freundin steht mit dem Hackebeil hinter mir :wink:

Gruß

Jimmy

Trigger auf OnValue = TRUE | Varialbe: WZ_Beweg.Status

ScriptName: Licht_Zimmer


<?
//File: Licht_Zimmer.ips.php
if($IPS_SENDER == "Variable") {

 //Lampe Abends anschalten, wenn nicht bereits an
 if(!GetValueBoolean("Ist_Tag") && !GetValueBoolean("AZ_FS_Ambiente.Status")) {
  IPS_RunScript("LAMPE_ON"); //Hier dein Lampe An Script oder Alternativ der SwitchMode Befehl
 }
 
 IPS_SetScriptTimer("Licht_Zimmer", 300); //Timeout 5 Minuten

} else {

//Lampe ausschalten, wenn an und wenn Taster auch auf AUS! (Sonst würde der Piri das Licht ausmachen, wenn man manuell das Licht angemacht hat, der PIRI Timer aber abgelaufen ist)
 if(GetValueBoolean("AZ_FS_Ambiente.Status") && !GetValueBoolean("WZ_TA_Taste1.Status")) { 
  IPS_RunScript("LAMPE_OFF"); //Dein Lampe OFF Script oder SwitchMode
 }

 //Keine Bewegung mehr im Zimmer (Nur damit die Variable stimmt...)
 SetValueBoolean("WZ_Beweg.Status", FALSE);
 
 //Timer ausschalten, wenn abgelaufen
 IPS_SetScriptTimer("Licht_Zimmer", 0);
 
}

?>

Habe mein Script ein wenig angepasst… muss nicht laufen (hab ich nur so nach Gefühl umgeschrieben)… sollte aber…

paresy

Hi paresy,

was ist in den Scripts die Variable „IPS_Sender“. Die habe/ kenne ich nicht?

Gruß

Jimmy

Dieses Kapitel sollte man gelesen haben…

http://www.ipsymcon.de/wiki/index.php/Main_Userinterface

Kapitel -> Script_Events

paresy…

Hi paresy,

nun kommt Licht ins Dunkel. Also ab ans „Zeichenbrett“.

Danke für den Tip.

Gruß

Jimmy

Hi,

irgendwo ist in meinem Script noch ein kleiner Bug. Das Licht wird durch den Piri bei Bewegung korrekt angeschaltet. Bleibt dann 5 Minuten an, geht aus. Piri wechselt auf „false“ und Licht schaltet wieder ein. Der Taster steht auch auf „false“. Warum wird die Variable AZ_FS_Ambiente.Status wieder auf true gesetzt?

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : WZ_Beweg.ips.php
Trigger  : 
Interval : 
*/
//File: Licht_Zimmer.ips.php
if($IPS_SENDER == "Variable") {

 //Lampe Abends anschalten, wenn nicht bereits an
 if(!GetValueBoolean("Ist_Tag") && !GetValueBoolean("AZ_FS_Ambiente.Status")) {
  IPS_RunScript("AZ_FS_Ambiente_ON"); //Hier dein Lampe An Script oder Alternativ der SwitchMode Befehl
 }

 IPS_SetScriptTimer("WZ_Beweg", 300); //Timeout 5 Minuten

} else {

//Lampe ausschalten, wenn an und wenn Taster auch auf AUS! (Sonst würde der Piri das Licht ausmachen, wenn man manuell das Licht angemacht hat, der PIRI Timer aber abgelaufen ist)
 if(GetValueBoolean("AZ_FS_Ambiente.Status") && !GetValueBoolean("WZ_TA_Taste1.Status")) {
  IPS_RunScript("AZ_FS_Ambiente_OFF"); //Dein Lampe OFF Script oder SwitchMode
 }

 //Keine Bewegung mehr im Zimmer (Nur damit die Variable stimmt...)
 SetValueBoolean("WZ_Beweg.Status", FALSE);

 //Timer ausschalten, wenn abgelaufen
 IPS_SetScriptTimer("WZ_Beweg", 0);

}

?>

Gruß

Jimmy

Hi,

weiss denn keiner eine Hilfestellung?

Wenn ich ein anderes Script aus dem Forum verwende:

/*
*******************************
IP-SYMCON Event Scripting
*******************************
File     : WZ_Beweg.ips.php
Trigger  :
Interval :
*/
$move = GetValueBoolean("WZ_Beweg.Status");
$FS20S4U_PB = GetValueBoolean("WZ_TA_Taste1.Status");
$switch_duration = 50; // switchtime for Light
$day_status = GetValueBoolean("Ist_Tag");

switch ($IPS_SENDER)
        {
         case "Variable"   : if ($IPS_VARIABLE == "WZ_TA_Taste1.Status")
                                 if ($FS20S4U_PB == False)
                                     {
                                     SetValueBoolean("WZ_Beweg.Status", False);
                                     IPS_SetScriptTimer("WZ_Beweg", 0);
                                     }

                             if ($IPS_VARIABLE == "WZ_Beweg.Status")
                                  if ($move == True)
                                      if ($FS20S4U_PB == False)
                                          if ($day_status == False)
                                          {
                                           FS20_SwitchDuration(31927, True, $switch_duration);
                                           IPS_SetScriptTimer("WZ_Beweg", $switch_duration);
                                          }
                             break;


         case "TimerEvent" : SetValueBoolean("WZ_Beweg.Status", False);
                             if ($FS20S4U_PB == False)  IPS_SetScriptTimer("WZ_Beweg", 0);
                             break;
        }
?>

Wechselt nur die Variable des Piri auf true und nichts passiert. Kann mir einer bei meinem ersten Script von paresy helfen? Warum schaltet die Variable „AZ_FS_Ambiente.Status“ nach 5 Minuten aus und wieder ein?

Gruß

Jimmy

Hi,

habe jetzt paresy´s scrips am Laufen. Problem scheint zu sein, dass bei mir, wenn die Variable für das Licht auf true schaltet, auch die Variable für den Taster auf true wechselt.

Ich weiss nicht mehr weiter. Ich brauche doch die Beziehung Taster <-> Lampe, um manuell zu schalten und die Beziehung Piri <-> Lampe, um bei Bewegung zu schalten. Aber irgendwie beisst sich das.

@paresy Thx für das Script. Bis auf das o.g. Problem läuft es perfekt.

Gruß

Jimmy