Undefinierbarer Fehler beim Scriptaufruf

Hallo zusammen,

habe da ein Problem mit meinem Script.
Bekomme die Fehlermeldungen:

Warning: Unknown parameter in C:\IP-Symcon\scripts\15864.ips.php on line 41

Warning: Unknown parameter in C:\IP-Symcon\scripts\15864.ips.php on line 42

Hier mal der Code:

<?

$BEW = GetValue (16301 /*[Steuerung Haus\Außenbereich\Sicherheit\Bewegungsmelder Carport\Bewegung]*/);
$Sonnenaufgang = GetValue (52726 /*[Astronomische Ereignisse\Sonnenaufgang]*/);
$Sonnenuntergang = GetValue (19050 /*[Astronomische Ereignisse\Sonnenuntergang]*/);

function makeSpecialTimestamp($datum)
	{
		$split = explode(" ",$datum);

		$Tag_Monat_Jahr = $split[0];
		$Stunde_Minute_Sekunde = $split[1];

		$split2 = explode(".",$Tag_Monat_Jahr);
		$split3 = explode(":",$Stunde_Minute_Sekunde);

		$Tag = $split2[0];
		$Monat = $split2[1];
		$Jahr = $split2[2];
		$Stunde = $split3[0];
		$Minute = $split3[1];
		$Sekunde = $split3[2];

		$datum = mktime($Stunde,$Minute,$Sekunde,$Monat,$Tag,$Jahr);

		return $datum;
	}

$Sonnenaufgang = makeSpecialTimestamp($Sonnenaufgang);
$Sonnenuntergang =  makeSpecialTimestamp($Sonnenuntergang);
$Zeit = time();

If (( $BEW == true) and !( $Zeit > $Sonnenaufgang and $Zeit < $Sonnenuntergang ))
	{
  HM_WriteValueBoolean(44476 /*[Steuerung Haus\Außenbereich\Licht\Wegbeleuchtung]*/, "Wegbeleuchtung", true);
  HM_WriteValueBoolean(27696 /*[Steuerung Haus\Außenbereich\Licht\Lampe Terasse]*/, "Lampe Terasse", true);
	}

else if ( $BEW == false )
	{
HM_WriteValueBoolean(44476 /*[Steuerung Haus\Außenbereich\Licht\Wegbeleuchtung]*/, "Wegbeleuchtung", false);
HM_WriteValueBoolean(27696 /*[Steuerung Haus\Außenbereich\Licht\Lampe Terasse]*/, "Lampe Terasse", false);
	}
?>

Das seltsame ist, daß in Zeile 35 und 36 die gleichen Parameter gesetzt werden, nur eben als „true“, und da schimpft er nicht :confused:

Habt Ihr da eine Idee woran es liegen könnte? Ich habe es auch schon nur mit else, also so probiert:

else
	{
HM_WriteValueBoolean(44476 /*[Steuerung Haus\Außenbereich\Licht\Wegbeleuchtung]*/, "Wegbeleuchtung", false);
HM_WriteValueBoolean(27696 /*[Steuerung Haus\Außenbereich\Licht\Lampe Terasse]*/, "Lampe Terasse", false);
	}

Da kommt die gleiche Meldung. Die Ausdrücke „Wegbeleuchtung“ und „Lampe Terasse“ sind auch 100% richtig geschrieben.

Grüße
Mario

Hallo Upuaut

kann es vielleicht daran liegen das bei

If (( $BEW == true)

das if groß geschrieben is?

HM_WriteValueBoolean(44476 /[Steuerung Haus\Außenbereich\Licht\Wegbeleuchtung]/, „Wegbeleuchtung“, false);
HM_WriteValueBoolean(27696 /[Steuerung Haus\Außenbereich\Licht\Lampe Terasse]/, „Lampe Terasse“, false);

Schau dir den HM_Write… Befehl nochmal an. Ein „Wegebeleuchtung“ ec. hat da nichts zu suchen. „STATE“ wäre hier wohl passender.

Hallo,

am „If“ liegt es nicht. Und leider auch nicht an der Bezeichnung der Parameter.
Die kann ich ja im Objektbaum nennen wie ich will und dort sind sie auch so benannt wie im Script (siehe Anhang).
Und wie gesagt; Licht einschalten ist ja kein Problem. Warum geht aber aus (false) nicht?

Grüße
Mario

Hallo Mario,

… das könnte eventuell ein Bug sein, habs mal kurz ausprobiert und bekomm da selber ein inkonsitentes Verhalten!

Benenne die Variablen wieder auf den ursprünglichen Werte „State“ um und es wird funktionieren!

Man kann die Variable „State“ umbennenen wie man will, aber trotzdem schaltet man über die Instanz, wobei STATE gleich State bleibt…

HM_WriteValueBoolean(Instanz-ID, "STATE", false);

… das ist kein Bug.

P.S. Siehe http://www.homematic.com/fileadmin/pdfs/HM_Script_Teil_4_Datenpunkte_1_503.pdf

@nancilla - Hast recht, war zu voreilig …

Anders als Nancilla habe ich es auch nicht gemeint. Aber dass es bei TRUE funktionieren soll find ich schon sehr merkwürdig.

Letztendlich lag es daran, daß die Variablen nicht „STATE“ hießen.
Das komische war nur, daß ich 100%ig schon eine Verbindung hatte mit „Wegbeleuchtung“. Allerdings hießen sie zuerst „STATE“ und ich habe sie umbenannt, es dann ausprobiert und es ging.
Beim ändern für die „Ausschaltbedingung“ kam dann der Fehler auf.
Leider ist der Fehler so nicht mehr reproduzierbar
In gewisser Weise, denke ich war es ein Bug und ist es eigentlich auch noch, denn die Fehlermeldung müßte eigentlich dann auch schon für Zeile 35 und 36, also:

HM_WriteValueBoolean(44476 /*[Steuerung Haus\Außenbereich\Licht\Wegbeleuchtung]*/, "Wegbeleuchtung", true);
  HM_WriteValueBoolean(27696 /*[Steuerung Haus\Außenbereich\Licht\Lampe Terasse]*/, "Lampe Terasse", true); 

aufkommen.