Bekomme das einfachste Sript nicht hin

:confused:

Es soll einfach nur Meldungen anzeigen, vorerst, aber irgenwie bin ich zu blöd dafür.

2 x HMS100 TFK, jeweils einzelne Meldung Tür auf, Sammelmeldung beide Türen zu.

Teilweise geht es, teilweise nicht.
Wäre schön, wenn mir einer helfen würde, hab schon so ziemlich alles durchprobiert, nur verstehe ich leider einiges noch nicht:mad:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Meldung_Tuerkontakte.ips.php
Trigger  : 
Interval : 
*/

 $Haustuer = GetValueBoolean("Tuerkontakt_Haustuer.Status");
 $Keller = GetValueBoolean("Türkontakt_Keller.Status");

 if ($Haustuer == True);
 {
 FS20_SwitchMode(55214, true);
 echo "Haustür ist offen.";
 }



 //$Keller == True;

 //FS20_SwitchMode(55214, true);
 //echo "Kellertür ist offen.";



 if (($Haustuer == false) and ($Keller == false))
 {
 echo "Türen sind geschlossen.";
 FS20_SwitchMode(55214, false);
 }


?>

Wo soll er es denn Anzeigen?

Per echo zeigst du es nur im Debug Fenster an.

paresy

Genau da soll es erst mal erscheinen.

das geht auch allerdings geht mein scripot nicht so wie es soll.

es soll mir einfach erst mal die einzelnen Meldingen bringen.

Wenn Tür keller auf dann Alarm
Wenn Tür Haustür auf dann Alarm

Wenn beide Türen geschlossen Alarm aus

Geht alles nur fehlen mir irgendwo Klammeraffen, das er die Meldungen einzeln anzeigt.

Im Moment zeigt er 2 Meldungen an, obwohl nur eine gesetzt ist:confused:

if ($Haustuer == True); <— Ich glaube das ist ein ; zuviel :slight_smile:

Hier mein Vorschlag:


$Haustuer = GetValueBoolean("Tuerkontakt_Haustuer.Status"); 
 $Keller = GetValueBoolean("Türkontakt_Keller.Status"); 

if ($Haustuer)
 { 
 echo "Haustür ist offen."; 
 } 
else if ($Keller)
 { 
 echo "Kellertür ist offen."; 
 } 
else if($Haustuer && $Keller)
{
echo "Alle Tueren offen."; 
}
else
 {
echo "Keine Tuer offen."; 
}
 

Danke

aber das geht auch nicht.

Es sollen einzelne Meldungen kommen je nach Status der Türen und dann einen Aktor schalten.

Super, Danke!!!

Nehme alles zurück und behaupte das Gegenteil:)

noch nicht ganz fertig, passt aber schon.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Meldung_Tuerkontakte.ips.php
Trigger  : 
Interval : 
*/

 $Haustuer = GetValueBoolean("Tuerkontakt_Haustuer.Status");
 $Keller = GetValueBoolean("Türkontakt_Keller.Status");

 if ($Haustuer == true)
{
echo "Haustür ist offen.";
FS20_SwitchMode(55214, true);
}
 if ($Keller == true)
{
echo "Kellertür ist offen.";
FS20_SwitchMode(55214, true);
}
else if($Haustuer && $Keller == false)
{
echo "Alle Tueren offen.";
}
else
{
echo "Keine Tuer offen.";
FS20_SwitchMode(55214, false);
}

?>

also ich versteh das nicht -> else if($Haustuer && $Keller == false)

1.) deine Zeile heißt für mich -> ist ($Haustuer = true wahr) UND ($Keller = false wahr) dann …
aber du wolltest doch bestimmt schreiben -> ist ($Haustuer = true wahr) UND ($Keller = true wahr) dann …

2.) müsste es für mich „true“ heissen (bei true = Tür auf)
3.) geht das mit „deinem“ Syntax so?

Ich hätte für false geschrieben -> elseif (!$Haustuer && !$Keller)

und da ich der Meinung bin es müsste „true“ heißen … dann ->

in Lang-Schreibweise -> elseif (($Haustuer == True) && ($Keller == True))

und in Kurz-Schreibweise -> elseif ($Haustuer && $Keller) :slight_smile:

Hi,

textet mich jetzt nicht mit dem Zeug zu was ich eh noch nicht verstehe(kommt hoffentlich noch)

Aber das passt schon.

Wenn eine Tür aufgeht, gibt es eine Meldung.(NC)

Das ganze ist für mich nur zum Testen und wird weiter ausgebaut.

Hi Rainer …

trotzdem bin ich der Meinung da ist ein Fehler drin …

Ganz einfach geht das so (meine ich):

<?
if (!$Haustuer && !$Keller) {
echo „Keine Tuer offen.“;
FS20_SwitchMode(55214, false); }
else {
if ($Haustuer){
echo „Haustür ist offen.“; }
else {echo „Kellertür ist offen.“;}
FS20_SwitchMode(55214, true);
}
?>

Fertig !

Hi Obi,

danke dir erst mal, werde mir das am WE zu Gemüte führen.

Aber jetzt geht es in die Heija um 5 ist die Nacht rum:)

<?
if (!$Haustuer && !$Keller)  // Wenn Haustür AND Kellertür zu sind ..
{              
  echo "Keine Tuer offen.";  // dann schreibe ... 
  FS20_SwitchMode(55214, false);  // und schalte ...
}  
else  //wenn das nicht zutrifft ... 
{                                                 
  if ($Haustuer)  // und es die Haustüre war ..
  {  
    echo "Haustür ist offen.";  // dann schreibe ...
  }             
  else  // wenn nicht, dann wars der Keller .. 
  {
    echo "Kellertür ist offen.";  // dann schreibe ...  
  }         
  FS20_SwitchMode(55214, true);  // und egal welche von beiden .. schalte ...
}
?>
Edit:

Code-Tags eingefügt und formatiert. Gruß, Toni

Obi:
Wenn du [ P H P ] ohne lehrzeichen nutz und abschliesst mit [ / P H P ]
Dann nutzt das forum eine nicht proportionellen schriftart die sich besser lesen lasst.
zb


<?
// Hallo Script
?>

Dein script lasst sich lesen als :


<?
if (!$Haustuer && !$Keller) { // Wenn Haustür AND Kellertür zu sind ..
echo "Keine Tuer offen."; // dann schreibe ... 
FS20_SwitchMode(55214, false); } // und schalte ...
else { //wenn das nicht zutrifft ... 
if ($Haustuer){ // und es die Haustüre war ..
echo "Haustür ist offen."; } // dann schreibe ...
else // wenn nicht, dann wars der Keller .. 
{echo "Kellertür ist offen.";} // dann schreibe ... 
FS20_SwitchMode(55214, true); // und egal welche von beiden .. schalte ...
}
?>

Danke für den Tipp GGGss …

war aber schon soooo spät gestern … :wink:

Hi Obi,

dein Script läuft super. Danke;)

Nächstes Problem, nun sollen die Meldungen im Designer angezeigt werden, ich meine hierzu auch schon was gelesen zuhaben, nur finde ich es nicht mehr.
Ich denke ich werde es über ein Label anzeigen lassen. Eine Variable-String erstellen in die dann reingeschrieben wird, nur wie:confused:

Hast du noch einen Tip für mich.

Wieso nicht eine ‚alarm‘-variable (boolean) einrichten und anzeigen?
Wenn du diesem siechst - gehe auf die alarm-seite
Und auf die alarm-seite einem label mit texte. Fragst du dich: "hey ! wieso alarm - lassen wir mal sehen ; aha die keller-tur ist offen)


SetValueBoolean("alarm", true);
SetValueString("alarmstr", "Alarm: kellertur nicht geschlossen");

Hi Rainer,

wie GGGss schon schrieb. Bindeglied zwischen Designer und deinen Scripten sind die ipsymcon Variabelen. Lege 2 Variabelen an. Eine String Variabele für die Alarmmeldung (alarmstring) und eine Boolen (False/true) für den Alarm an sich (alarm). Die „Echo“ Ausgabe schreibst du in die String Variabele und den Status in die Boolen Variabele. Nun kannst du beides im Designer anzeigen lassen.

Du kannst so auch die Variabelen in weitere Scripte übernehmen (als Trigger). Z.B. wenn „Alarm = True“ dann Rundumleuchte und Sirene an … und „Alarmstring“ per mail und/oder SMS raus …

Danke, funktioniert bestens.

 $Haustuer = GetValueBoolean("Tuerkontakt_Haustuer.Status");
 $Keller = GetValueBoolean("Türkontakt_Keller.Status");

if (!$Haustuer && !$Keller)  // Wenn Haustür AND Kellertür zu sind ..
{
  echo "Keine Tür offen.";  // dann schreibe ...
  SetValueBoolean("Alarm", false);
  SetValueString("Alarmtext", "Alle Türen geschlossen");
  FS20_SwitchMode(55214, false);  // und schalte ...
}
else  //wenn das nicht zutrifft ...
{
  if ($Haustuer)  // und es die Haustüre war ..
  {
    echo "Haustür ist offen.";  // dann schreibe ...
    SetValueBoolean("Alarm", true);
  SetValueString("Alarmtext", "Alarm: Haustür nicht geschlossen");
  }
  else  // wenn nicht, dann wars der Keller ..
  {
    echo "Kellertür ist offen.";  // dann schreibe ...
   SetValueString("Alarmtext", "Alarm: Kellertür nicht geschlossen");
  }
  FS20_SwitchMode(55214, true);  // und egal welche von beiden .. schalte ...
}

bei der Kellertür wird die Variabele „Alarm“ nicht auf „True“ gesetzt …


if ($Haustuer)  // und es die Haustüre war .. 
  { 
    echo "Haustür ist offen.";  // dann schreibe ... 
    SetValueBoolean("Alarm", true); // und setze Alarm = True
  SetValueString("Alarmtext", "Alarm: Haustür nicht geschlossen"); 
  } 
  else  // wenn nicht, dann wars der Keller .. 
  { 
    echo "Kellertür ist offen.";  // dann schreibe ...
    SetValueBoolean("Alarm", true);  // und setze Alarm = True <- Vergessen !!
   SetValueString("Alarmtext", "Alarm: Kellertür nicht geschlossen");

Aber noch besser ist …


if (!$Haustuer && !$Keller)  // Wenn Haustür AND Kellertür zu sind .. 
{ 
  echo "Keine Tür offen.";  // dann schreibe ... 
  SetValueBoolean("Alarm", false); 
  SetValueString("Alarmtext", "Alle Türen geschlossen"); 
  FS20_SwitchMode(55214, false);  // und schalte ... 
} 
else  //wenn das nicht zutrifft ... 
{ 
  if ($Haustuer)  // und es die Haustüre war .. 
  { 
    echo "Haustür ist offen.";  // dann schreibe ... 
    SetValueString("Alarmtext", "Alarm: Haustür nicht geschlossen"); 
  } 
  else  // wenn nicht, dann wars der Keller .. 
  { 
    echo "Kellertür ist offen.";  // dann schreibe ... 
    SetValueString("Alarmtext", "Alarm: Kellertür nicht geschlossen"); 
  } 
FS20_SwitchMode(55214, true);  // und egal welche von beiden .. schalte ... 
SetValueBoolean("Alarm", true);  // und setze Alarm = True <- Hier ist richtig !!
} 

Hi Obi,

bei der Kellertür wird die Variabele „Alarm“ nicht auf „True“ gesetzt …

Doch schaltet einwandfrei um:confused:

Oder wie meinst Du das jetzt?

Du setzt die „Alarm“ Variabele nur hier ->

if ($Haustuer)  // und es die Haustüre war .. 
  { 
    echo "Haustür ist offen.";  // dann schreibe ... 
    SetValueBoolean("Alarm", true); 
  SetValueString("Alarmtext", "Alarm: Haustür nicht geschlossen"); 
  } 

trifft aber „else“ zu, also Keller Tür auf dann schaltest du den „Alarm“ nicht →

else  // wenn nicht, dann wars der Keller .. 
  { 
    echo "Kellertür ist offen.";  // dann schreibe ... 
   SetValueString("Alarmtext", "Alarm: Kellertür nicht geschlossen"); 
  } 

du schaltest nur →

FS20_SwitchMode(55214, true);  // und egal welche von beiden .. schalte ...

solltest hier aber einfach beides schalten (vertrau mir :wink: )

FS20_SwitchMode(55214, true);  // und egal welche von beiden .. schalte ... 
SetValueBoolean("Alarm", true);