Hilfestellung bei Fehlermeldung

Guten Abend zusammen,

Ich habe mir ein Skript angelegt mit diesem ich meine Terrassenbeleuchtung nur dann Schalte wenn die Türe geschlossen oder gekippt ist, sodass wenn wir Abends draußen Sitzen der Bewegungsmelder deaktiviert ist.
Leider erzeugt mir das Skript immer wieder Fehler im Meldungsfenster obwohl es Funktioniert.

Die Fehlermeldung:

18.03.2019, 23:09:26 | ScriptEngine | Ergebnis für Ereignis 12922
<br />
<b>Warning</b>: Unexpected character in input: ‚‘ (ASCII=30) state=0 in <b>/var/lib/symcon/scripts/45827.ips.php</b> on line <b>13</b><br />
<br />
<b>Warning</b>: Unexpected character in input: ‚‘ (ASCII=30) state=0 in <b>/var/lib/symcon/scripts/45827.ips.php</b> on line <b>13</b><br />

Hier das Skript, eventuell weis hier jemand wieso ich diese Meldung bekomme?


<?
//Schaltet Ziegelleuchten bei geschlossener Türe und Bewegung ein.

//Geräte 

$Dämmerung = GetValueInteger(39905);
$Bewegung = GetValueBoolean(17304); 
$Türe = GetValue(IPS_GetObjectIDByIdent("STATE", 18382)); 




if ($Türe == 1 && $Bewegung == true && $Dämmerung < 500 || $Türe == true && $Bewegung == 1 && $Dämmerung < 500)
{
 HM_WriteValueFloat(54450, "RAMP_TIME",  1);     // 1 Sekunden Rampe 
 HM_WriteValueFloat(54450, "ON_TIME",  120);         // 120 Sekunden AN 
 HM_WriteValueFloat(54450,"LEVEL", 1.0);
 	IPS_LogMessage("Bewegungsmelder", "Ziegelleuchten Terrasse wurden durch Bewegung eingeschalten");
}

?>


Herzlichen Dank im Voraus für die Hilfe

Gruß, Adrian

Hi,

ich denke, es wird wohl das Zeichen

$Dämmerung < 500

vor dem „kleiner-Als-Zeichen“ sein. :wink:

Viele Grüße
Peter

Hi Adrian. Schätze Dampflok hat recht. Ich zähle bis zur Zeile 13, schaue sie mir Stück für Stück an und finde genau das Zeichen. Zwei mal. Und ich muss gestehen stimme mit deinem IPS überein. Das hat da tatsächlich nichts verloren. Was wolltest du denn damit erreichen? Wie ist denn das da rein geraten? Einfach weglassen sollte schon funktionieren.

Toni

Hallo Adrian,

du solltest auch deine if Bedingung noch einmal überprüfen. So macht sie noch nicht wirklich Sinn:

Zum einen musst du zwingend Klammern setzen, sonst ist die Auswertungsreihenfolge mit Sicherheit eine andere als du erwartest.
Zum anderen ist zumindest die Abfrage auf den Boolean Wert $Bewegung doppelt, da $Bewegung == true identisch ist mit $Bewegung == 1. Ob $Türe auch vom Typ Boolean ist, kann man nicht erkennen.

Ich würde es so formulieren:

if ((($Türe == true) || ($Türe == 1)) && ($Bewegung == true) && ($Dämmerung < 500))

Gruß

Burkhard

Hallo zusammen,

Danke für die Tipps nun funktionierst ohne Fehler :wink:

Jedoch wird mir nicht ganz klar was gemeint ist mit „Das Zeichen vor dem kleiner als Zeichen“ meint ihr damit $Dämmerung? was ist daran falsch ? Sollte ich umlaute vermeiden ?

Danke bumaas für den Tipp mit der Überarbeitung der if-Bedingung.

Gruß, Adrian

Das komische Sonderzeichen da war gemeint:
Michael

Umlaute sind in PHP als Variablennamen zwar erlaubt, aber das ist eher untypisch für Programmiersprachen. Ich würde Umlaute und Sonderzeichen meiden um Schwierigkeiten aus dem Weg zu gehen.

Das Sonderzeichen in Nallchans Screenshot wird bei mir im Post #1 garnicht angezeigt, da ist einfach nichts (Tapatalk) . Warscheinlich konnte der TE es in seinem Editor auch nicht sehen ? und deshalb den Fehler nicht finden ?

Gruß Julian

Gesendet von iPhone mit Tapatalk Pro

Darum habe ich es mir extra in Chrome angesehen :wink:
TapaTalk hat sogar noch mehr Probleme mit dem Beitrag, außer das es dieses Zeichen nicht anzeigt.
Michael