Funktioniert CreateScriptByName?

Ich habe das Problem wenn ich z.B CreateScriptByName nutze wird das Script erstellt aber nicht !
Aber nicht mit Inhalt befüllt!

Kann mir jemand erklären wo dran das liegt!!
Nutzen tue das ich Installationsscript aus diesem Beitrag!

https://www.symcon.de/forum/threads/16083-Chromoflex-RC-Steuerung-mit-RGB-Fader-und-Color-Picker

Da wird CreateScriptByName genutzt.

Evtl. \ gegen / tauschen? Du kannst auch auf die IPS_SetScriptContent Methode umstellen :slight_smile:

paresy

Ja das war die Lösung! Danke

Nach langer Zeit möchte noch ein Chromoflex-RC zufügen und scheitere an der CreateScriptByName Funktion.

Ich habe es auch mit

versucht aber bekomme mehr oder weniger den gleichen Fehler! Im String der übergeben wird

if ($_IPS['SENDER'] == "WebFront")

moniert.

Hier mal das Test Skript:

<?php

$ZielSkript_Name = "TestSkript";
$ParentID = $_IPS['SELF'];

$Script_ID = @IPS_GetScriptIDByName($ZielSkript_Name, $ParentID);


if ($Script_ID === false) {
	fopen("$ZielSkript_Name.ips.php","w");
	$Script_Path = "$ZielSkript_Name.ips.php";
	$Script_ID = IPS_CreateScript(0);
	$Script = IPS_GetScript($Script_ID);
	unlink(IPS_GetKernelDir() . '/scripts/' . $Script['ScriptFile']);
	IPS_SetScriptFile($Script_ID, $Script_Path);
   IPS_SetParent($Script_ID, $ParentID);
	IPS_SetName($Script_ID, $ZielSkript_Name);
	$Script_Inhalt =
'<?php
// Hier steht der Inhalt vom Ziel-Skript
echo "Ich bin ein neues Skript!";

if ($_IPS['SENDER'] == "WebFront")
{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}

?>';

IPS_SetScriptContent($Script_ID, $Script_Inhalt);
}
else {
	echo "Das Skript mit dem Namen '$ZielSkript_Name' existiert bereits!";
}

?>

Und die Fehlermeldung:

Parse error: syntax error, unexpected identifier "SENDER" in C:\ProgramData\Symcon\scripts\55458.ips.php on line 23

Was ist daran falsch?

Du hast ein den Scriptinhalt IN den einfachen Hochkommatar ' das ist soweit auch in Ordnung. Aber innerhalb des Scripts auch. Daher musst du die im Script mit einem \ escapen. Sieht dann z.B. so aus:

if ($_IPS[\'SENDER\'] == "WebFront")

Danke geht. (Auch bei der alten CreateScriptByName Variante)