Was ist falsch?

Hallo,

ich habe ein Script das überprüft ob das Garagentor geschlossen ist.
Am Tor hängt ein Reed-Schalter der „True“ ist wenn es geschlossen ist.


<?
$status = GetValue(44003 /*[LCN\KG\Modul 6 SH2/1\Binary Input 1 Reed Tor Garagenkeller\Status]*/);
$textalt = GetValueString(38044 /*[Warnung\Warnungen]*/);


if ($status == false)
	{
	SetValueString(38044 /*[Warnung\Warnungen]*/, $textalt."
".date("H:i:s")."  ACHTUNG: Garagentor ist offen");
   SetValueInteger(29774 /*[Sonstiges\Tab]*/,6);
   TTS_Speak(49696 /*[Sonstiges\Text To Speech]*/,"Achtung: Garagentor", false);
	}
?>

Das tor ist jetzt geschlossen und trotzdem wird mir die Meldung ausgegeben.

Ich habe keine Ahnung warum es in der V2.2 nicht mehr funtioniet.

Vielen Dank.

Gruß
Christian

wird daran liegen, dass der Status false ist. Mach doch mal ein Echo auf den Status, dann siehst Du was los ist.

if (!$status)

kannst ja das mal probieren.

Danke Rainer,

if (!$status)

hat funktioniert.

echo $status;

macht leider keine Ausgabe.

Ich frage mich nur warum?

Gruß
Christian

PHP-Code:

[LEFT] echo $status;
[/LEFT]

macht leider keine Ausgabe.

auch nicht bei true.

Mir ist auch schon aufgefallen das 0 und false nicht immer ausgewertet werden. Deswegen nehme ich dann !$status = ungleich true(1), also false(0).

echo int($status);
Fatal error:  Call to undefined function int() in [Warnung\Torüberprüfung] on line 5

Zur Info:
$status ist eine Boolean-Variable.

Gruß
Christian

Muesste es , um sicher zu sein , nicht so heissen ?

GetValueBoolean(44003);

Ich glaube steiner meinte das so:

echo (int)$status;  

Ausgabe ist 0 oder 1.

Hallo nancilla,

Du hast recht. Das war die Lösung.

Und mit

(!$status == false)

funktioniert auch die if-Abfrage.

Ich habe es nochmals aufprobiert:
In der V2.2 gibt es Unterschiede.

V2.1:

<?
$status = GetValueBoolean(44003 /*[LCN\KG\Modul 6 SH2/1\Binary Input 1 Reed Tor Garagenkeller\Status]*/);
$textalt = GetValueString(38044 /*[Warnung\Warnungen]*/);

echo $status;

if ($status == false)
	{
	SetValueString(38044 /*[Warnung\Warnungen]*/, $textalt."
".date("H:i:s")."  ACHTUNG: Garagentor ist offen");
   SetValueInteger(29774 /*[Sonstiges\Tab]*/,6);
   TTS_Speak(49696 /*[Sonstiges\Text To Speech]*/,"Achtung: Garagentor", false);
	}
?>

V2.2:

<?
$status = GetValueBoolean(44003 /*[LCN\KG\Modul 6 SH2/1\Binary Input 1 Reed Tor Garagenkeller\Status]*/);
$textalt = GetValueString(38044 /*[Warnung\Warnungen]*/);

echo (int)$status;

if (!$status == false)
	{
	SetValueString(38044 /*[Warnung\Warnungen]*/, $textalt."
".date("H:i:s")."  ACHTUNG: Garagentor ist offen");
   SetValueInteger(29774 /*[Sonstiges\Tab]*/,6);
   TTS_Speak(49696 /*[Sonstiges\Text To Speech]*/,"Achtung: Garagentor", false);
	}
?>

Leider gibt es keine Fehlermeldungen.

Gruß
Christian


If(!$status)

…reicht schon um auf false zu prüfen.