ich bin ein totaler php - nixchecker, ich bekomm folgendes script nicht zu laufen.
<?
if (
GetValue(35997 /*[Program\IPSLibrary\data\modules\IPSShadowing\Devices\Device3\TemperatureChange]*/ == TRUE and
GetValue(30844 /*[Program\Anwesenheit\Anwesenheit]*/) == TRUE and
GetValue(58443 /*[Program\IPSLibrary\data\modules\IPSShadowing\Devices\Device3\Display]*/) == 'Automatik' and
GetValue(57275 == 0
)
{
IPS_RunScript(18040 /*[Visualization\WebFront\Rolläden\script Rolladen Wintergarten unten my]*/);
//COMPort_SendText(22075 /*[Serial Port rollo com5]*/, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF9).chr(0xFB).chr(0x05).chr(0xDA));
}
?>
bringt folgenden output:
Parse error: syntax error, unexpected '{' in C:\IP-Symcon\scripts\33477.ips.php on line 8
Abort Processing during Fatal-Error: syntax error, unexpected '{'
Error in Script C:\IP-Symcon\scripts\33477.ips.php on Line 8
Ich hab auch schon die geschwungene Klammer weggelassen, funkt auch nicht.
Was mach ich da falsch?
Danke.
Ich sehe eher hier was:
GetValue(57275 == 0 )
Das soll wohl so aussehen:
GetValue(57275) == 0
Und dahinter fehlt noch ein ) was zum if ( gehört.
Michael
Übersichtlicher wird es, wenn du deine Scripte in der Art aufbaust:
<?
// Variablen
$var1 = GetValue(35997 /*[Program\IPSLibrary\data\modules\IPSShadowing\Devices\Device3\TemperatureChange]*/);
$var2 = GetValue(30844 /*[Program\Anwesenheit\Anwesenheit]*/);
$var3 = GetValue(58443 /*[Program\IPSLibrary\data\modules\IPSShadowing\Devices\Device3\Display]*/);
$var4 = GetValue(57275);
// eigentliches Script
if ($var1 and $var2 and ($var3 == 'Automatik') and ($var4 == 0))
{
IPS_RunScript(18040 /*[Visualization\WebFront\Rolläden\script Rolladen Wintergarten unten my]*/);
//COMPort_SendText(22075 /*[Serial Port rollo com5]*/, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF9).chr(0xFB).chr(0x05).chr(0xDA));
}
?>
Dann lassen sich Fehler besser erkennen und verstehen.
Wenn $var4 ein Boolean ist, dann gehts auch so (! = Negierung, also Abfrage auf false, sonst immer true):
if ($var1 and $var2 and ($var3 == 'Automatik') and !$var4)
Deshalb habe ich mir, trotz mehr Tipparbeit, angewöhnt die Variablenabfragen immer auf den Variablentyp auszuschreiben.
Also GetValueString, GetValueBoolean, GetValueFloat, GetValueInteger…
Das macht ein späteres Umarbeiten und Verstehen eines Scripts einfacher.