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
RWN
2
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
RWN
4
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).
Fatal error: Call to undefined function int() in [Warnung\Torüberprüfung] on line 5
Zur Info:
$status ist eine Boolean-Variable.
Gruß
Christian
1007
7
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.