An/- & Abwesenheit mit AKM-868 Tracker mit 2 od. mehrere Personen

Hallo Freunde der Programmierung,

ich habe hier zwei AKM Tracker und möchte die gerne einbinden zu An/- & Abwesendheit, damals hatte es bei mir funktioniert aber jetzt geht es einfach nicht mehr.

Mein vorhaben ist:
Wen Tracker1 und Tracker2 daheim ist soll die Rollade hoch gehen
Wen Tracker1 das Haus verlasst soll nix Passieren da Tracker2 noch daheim ist
Wen Tracker2 das Haus verlässt soll Rollade Schließen
Wen jetzt einer der Tracker daheim ist soll die Rollade wieder hoch fahren
kommt der Zweite Tracker Heim soll keine Aktion durch geführt werden.

Ich hatte damals fast alles über die Tracker Programmiert aber das Funktioniert einfach nicht mehr und ich bin ziemlich verzweifelt da es echt Super war.

Hat einer von Euch sowas in der Art Programmiert und kann mir Schritt für Schritt erklären wie ich das wieder zum Laufen bekomme?

Hier mal meine alte Programmierung

Das sind meine Tracker:

Das ist die komplette Übersicht des Tracker1:

Der Script von meinen Rolladen bei Anwesend:

Das Ereignis dazu:
Ereignis.JPG

Die Ereignis Variable geht auf Tracker2:

Ich muss noch dazu sagen das es funktioniert aber mit dem fehler, wen ein Tracker nicht daheim ist - das die Rolladen jedesmal schalten wen der andere Tracker auf True Pingt.

Kann mir Bitte bitte jemand helfen, ich bin mit mein Latein am Ende und ziemlich verzweifelt. Oder hat jemand eine andere vielleicht sogar einfachere Lösung.

Ich habe die Tracker ebenfalls.
Damit setze ich erst mal die Anwesenheit meiner Grand Dame und mir.
Dazu habe ich dann eine globale Variable „Anwesenheit“ für das Haus.
Diese wechselt auf Anwesend sobald einer da ist und erst auf Abwesend wenn beide weg sind.
Mit dieser Variable löse ich dann die Aktionen nach Anwesenheitszustand aus.
( Beleuchtung, Alarmanlage, Türschloss usw. )

1.png

Mein „Setze Status“ Script:


<?
// Includiert sonstige Zustände
include '41057 /*[Bornkamp 4\Scripte + Tools\# Includes\Sonstige Zustände]*/.ips.php';


if ($_IPS['SENDER'] == 'Execute')
	{
	echo "Die Exekutive agiert viel zu weich";
	}

if ($_IPS['SENDER'] == 'Variable')
	{
	if (($DorDa == "Abwesend") && ($FloDa == "Abwesend"))
			{
			SetValueBoolean ($HomeDaV, 0);
			}
	else 
			{
			SetValueBoolean ($HomeDaV, 1);
			}
	}
?>

Das wird dann noch um die Tochter erweitert, mit 4 hat die noch keinen Tracker, da sie nicht alleine da ist.

Lördy

Sorry ich hab das genau so angelegt aber es geht nicht und ehrlich gesagt ich verstehe es auch nicht so ganz…

mal Step by Step, ich habe jetzt unter Tracker1 zwei Ereignisse mit „bei bestimmten Wert“ angelegt, einmal mit True und einmal mit false - auf Tracker 2

ist das soweit richtig?

habe es jetzt mal nach diesem Prinzip probiert, da habe ich aber auch das Problem, wen Tracker 1 bereits daheim ist schaltet er denoch wen Tracker 2 dazu kommt. genau das darf und soll ja nicht Passieren…

/*  Link: https://www.symcon.de/forum/threads/28210-IP-Symcon-Wie-kann-ich-2-0?p=259961#post259961

Variable "An/- & Abwesenheit" kann folgende Zustände haben
0 = Tracker1 	und 			Tracker2 	sind ABWESEND
1 = Tracker1 	ist ANWESEND, 	Tracker2 	ist  ABWESEND
2 = Tracker1 	ist	ABWESEND, 	Tracker2 	ist  ANWESEND
3 = Tracker1 	und 			Tracker2 	sind ANWESEND
*/
// Hier die BOOL-Variable von Tracker1 eintragen (TRUE = Anwesend, FALSE = Abwesend)
 $Tracker1_Var = 29471 /*[...der KUTSCHER @Home\System Konfiguration\Personen Tracker\Personen Tracker\Tracker1\Tracker1 An/- Abwesend]*/;  
// Hier die BOOL-Variable von Tracker2 eintragen (TRUE = Anwesend, FALSE = Abwesend)
 $Tracker2_Var = 56730 /*[...der KUTSCHER @Home\System Konfiguration\Personen Tracker\Personen Tracker\Tracker2\Tracker2 An/- Abwesend]*/;  

 $Tracker1 = GetValue($Tracker1_Var);
 $Tracker2 = GetValue($Tracker2_Var);


// Trigger-Events anlegen, damit dieses Skript immer ausgeführt wird, wenn die
// Anwesenheits-Variablen von Tracker1 oder Tracker2 sich ändern
 CreateEventTrigger("An/- & Abwesend Tracker1", $Tracker1_Var, $_IPS['SELF'], 1);
 CreateEventTrigger("An/- & Abwesend Tracker2", $Tracker2_Var, $_IPS['SELF'], 1);


// Je nach Anwesenheit-Abwesenheit wird die Anwesenheits-Variable auf die entsprechende Zahl gesetzt
 if (($Tracker1 == true) AND ($Tracker2 == false)) 
   {
     $AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
     SetValue($AnwesenheitsVar_ID, 1);
	 
   }
 elseif (($Tracker1 == false) AND ($Tracker2 == true)) 
   {
     $AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
     SetValue($AnwesenheitsVar_ID, 1);
	  
   }
 elseif (($Tracker1 == true) AND ($Tracker2 == true)) 
   {
    $AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
    SetValue($AnwesenheitsVar_ID, 1);
   
   }
 elseif (($Tracker1 == false) AND ($Tracker2 == false)) {
    $AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
    SetValue($AnwesenheitsVar_ID, 0);
	
   }
   
   
  




function CreateVariableByName($ParentID, $VarName, $VarTyp, $VarProfile = "", $VarActionScript = "") 
{
    $VarID = @IPS_GetVariableIDByName($VarName, $ParentID);
   if($VarID === false) 
   {
        $VarID = IPS_CreateVariable($VarTyp);
      IPS_SetParent($VarID, $ParentID);
      IPS_SetName($VarID, $VarName);
      IPS_SetInfo($VarID, "This variable was created by script #".$_IPS["SELF"]);
      if($VarProfile !== "") 
	  {
            IPS_SetVariableCustomProfile($VarID, $VarProfile);
        }
        if($VarActionScript !== "") {
            IPS_SetVariableCustomAction($VarID, $VarActionScript);
        }
    }
   return $VarID;
}


function CreateEventTrigger($EventName, $VarID, $ParentID, $EventTyp) 
{
    $eid = @IPS_GetEventIDByName($EventName, $ParentID);
    if (is_numeric($eid) == false) 
	{
        $eid = IPS_CreateEvent(0);
        IPS_SetEventTrigger($eid, $EventTyp, $VarID);
        IPS_SetParent($eid, $ParentID);
        IPS_SetName($eid, $EventName);
        IPS_SetEventActive($eid, true);
    }
}
?>

Du könntest vor dem Schalten den Zustand prüfen, also Soll/Ist vergleich und nur schalten, wenn „nicht an“ ist.

hast du nen Schnippsel wie ich das machen kann

Hier hat doch bestimmt jemand einen Code Schnipsel wie ich in einem Script sagen kann „wenn“ die Integer Variabel auf 1 steht das dann keine Aktion folgen soll… Bitte

Ich habe bei mir 2 Tracker laufen, die bei definiertem Zustand ( wie bei dir) ein Script auslösen:

<?
// Einschalten, wenn keiner da ist
//ausgelöst durch Event, das beim Kommen dieses Script aufruft
if ($_IPS['EVENT'] == 52166 /*[Garage Autos\ein Tracker kommt\Golf kommt]*/)
    {
        if (!GetValue(34361 /*[Garage Autos\ProJet Tracker2 Qashqai\Qashqai Anwesend]*/)    {
                                         // Schalte ein
        }
    }
if ($_IPS['EVENT'] == 31101 /*[Garage Autos\ein Tracker kommt\Qashqai kommt]*/)
    {       
        if (!GetValue(36993 /*[Garage Autos\ProJet Tracker1 Golf\Golf Anwesend]*/)    {
                                       //Schalte ein
        }    
    }
?>

Dazu passend geht es auch mit dem Verlassen.

Mein Unterschied zu dir ist, dass ich das Ganze über zwei Scripte steuere.
Was mir noch auffällt, du sprichst im ersten Post vom daheim sein und nicht vom Kommen.
Ich habe alles über den Statuswechsel nach True, bzw. False und nicht um den Status_Zustand gesteuert.