Lichtsteuerung mit Dämmerungssensor und Anwesendheits Button

Hallo IPSler,

schalte mit hilfe eine Dämmerungssensor mein Licht im Haus. Leider hat sich das Licht auch eingeschaltet, wenn wir nicht da waren. Jetzt habe ich eine Boolean Variable namens outhome angelegt. Diese wird mittels eines kleinen Touchdisplay am Eingang geschaltet. Über dieses Script

$dunkel=GetValueBoolean ("dsensor_1");
$outhome=GetValueBoolean ("outhome");

if($IPS_SENDER == "Variable") {
  if ($dunkel && $outhome)
  {
echo "Es ist jemand zu Hause. Licht an";

FS20_SwitchMode (55067, true);   //Stehlampe an
FS20_SwitchMode (42884, true);   //Hennalampe an
FS20_SwitchMode (59737, true);   //Fensterlampe an
  }
} else {
echo "Keiner zu Hause. Licht aus";

FS20_SwitchMode (55067, FALSE);  //Stehlampe aus
FS20_SwitchMode (42884, FALSE);  //Hennalampe aus
FS20_SwitchMode (59737, FALSE);   //Fensterlampe an
};
?>

wollte ich das Wohnzimmerlicht so schalten, das wenn wir da sind (die Variable "outhome, false) das Licht an geht und wenn die Variable "outhome, true) sich das Licht nicht einschaltet.

Leider schaltet sich das Licht nicht ein. Immer nur aus.

Hate einer eine Idee wo der Fehler liegen könnte?

Grüße Mirco


 if ($dunkel && !$outhome)

Habe ich probiert. Leider ohne Erfolg. Sollte sich doch über Execute auch schalten lassen oder?

Grüße Mirco

Nein, schau dir mal deine Klammerungen an. Dein else-Block gehört zu if-Variable und da Execute nicht ‚Variable‘ ist wird dabei jedesmal ein else-Block ausgeführt. Ansonsten sollte der else-Block wohl eher zum anderen if gehören…

Gruss,
Olli

Olli hat recht. Die Klammer vor dem else muss ans Ende des Scriptes.

Versuchs dochmal mit strukturiertem Einrücken, das erleichtert die Übersicht enorm.


// was du wolltest
if($IPS_SENDER == "Variable") 
{
  if ($dunkel && $outhome)
  {
    echo "Es ist jemand zu Hause. Licht an";
  }
  else // ($dunkel && $outhome)
  {
    echo "Keiner zu Hause. Licht aus";
  }
}

//was du getippt hast
if($IPS_SENDER == "Variable") 
{
  if ($dunkel && $outhome)
  {
    echo "Es ist jemand zu Hause. Licht an";
  }
} 
else // ($IPS_SENDER == "Variable") 
{
  echo "Keiner zu Hause. Licht aus";
} 

Toni

Oder noch strukturierter (aufwendiger)


// was du wolltest
if($IPS_SENDER == "Variable") 
{
  if ($dunkel && $outhome)
  {
    echo "Es ist jemand zu Hause. Licht an";
  } // ende dunkel und outhome
  else 
  { 
    echo "Keiner zu Hause. Licht aus";
  } // ende !(dunkel und outhome)
}  //ende trigger durch Variable


Das ist dann natürlich oberklasse…

Grundsätzlich ist das bei langen und unübersichtlichen Scripten nicht schlecht, aber den Kommentar hatte ich in diesem Fall nur reingemacht um ihm seinen Fehler deutlicher zu machen… :wink: So ein kleines Script kommt IMO grade noch völlig ohne Kommentare aus…:cool:

Mir gings jetzt nur ums einrücken.

Toni