Wochenplan aus Modul erstellen

Die Konsole prüft den Skriptinhalt und nichts anderes.Dabei ist sie aber recht streng, damit ich nicht aus Versehen etwas überschreibe, wenn jemand sich das Skript als Vorlage nimmt und es mehr oder weniger anpasst.

Ich vermute, da sind irgendwelche Leerzeichen, Zeilenumbrüche oder dergleichen zu viel oder zu wenig. Kannst du sonst mal den Code posten, den du verwendest um die Aktion einzutragen? Dann kann ich gerne mal schauen, ob ich da was finde.

Gerne. Ich hab ihn aber gerade etwas modifiziert.
Habe nämlich noch Unterschiede gefunden als ich die Benachrichtigungen über WebSocket angeschaut habe.
Da waren im Code noch CR LF drinn anstatt nur LF, desweiteren hab ich auf dem objekt auch nochmals die werte hidden, disabled und icon gesetzt so wie das die Konsole auch macht. Rausgekommen ist ein (meiner Meinung nach) perfekte Kopie des Verhaltens der Konsole.

Allerdings kommen die Änderungen der Konsole über das WebSocket nicht immer in der gleichen Reihenfolge rein… Vielleicht könnte man da noch was drehen, was aber wohl nicht ausschlaggebend ist.

Hier das PHP Skript:

<?php
// general 
$eventType = 0;
$eventName = 'TESTEVENT';
$eventParentID = 43500;
$script = "// Template ID: {FCE37F48-DA3F-45DD-AC77-71343792CC2D}
// Template Name: Auf Wert schalten
\$ident = \"Switch\";
\$value = true;
\$target = \$_IPS['TARGET'];
if (IPS_InstanceExists(\$target)) {
 \$target = IPS_GetObjectIDByIdent(\$ident, \$target);
}
RequestAction(\$target, \$value);";

// trigger specific
$triggerVariableID = 24708;
$triggerType = 1;
$triggerValue = true;
$triggerContinuousExecution = false; // bei Grenzüberschreitung mehrmals ausführen

// initialize
$eid = IPS_CreateEvent($eventType);
IPS_SetName($eid, $eventName);
IPS_SetParent($eid, $eventParentID);

// do like console
IPS_SetHidden($eid, false);
IPS_SetIcon($eid, "");
IPS_SetDisabled($eid, false);

// event specific
IPS_SetEventTriggerValue($eid, 1);
IPS_SetEventTrigger($eid, $triggerType, $triggerVariableID);
IPS_SetEventScript($eid, $script);
IPS_SetEventTriggerSubsequentExecution($eid, $triggerContinuousExecution);

// activate
IPS_SetEventActive($eid, true); 

PS: Der Zeilenumbruch in der Template-ID ist nur hier im Forum…

Und da haben wir den Verantwortlichen! Das $target = IPS_GetObjectID… im if-Block ist im „Original“ mit zwei Leerzeichen eingerückt, in deinem Skript nur mit einem. Sobald du das gefixt hast, klappt es.

Wow. Es funktioniert.:eek:
Vielen Dank!
Die Konsole ist da aber seeehr genau :smiley:

Hier ist nochmal der funktionierende Code falls jemand da auch mal ansteht:

<?php


/** INPUTS **/
// general
$eventType = 0;
$eventName = 'TESTEVENT';
$eventParentID = 43500;
$script = "// Template ID: {FCE37F48-DA3F-45DD-AC77-71343792CC2D}
// Template Name: Auf Wert schalten
\$ident = \"Switch\";
\$value = true;
\$target = \$_IPS['TARGET'];
if (IPS_InstanceExists(\$target)) {
  \$target = IPS_GetObjectIDByIdent(\$ident, \$target);
}
RequestAction(\$target, \$value);";

// trigger specific
$triggerVariableID = 24708;
$triggerType = 1;
$triggerValue = true;
$triggerContinuousExecution = false;


/** PROCESSING **/
// initialize
$eid = IPS_CreateEvent($eventType);
IPS_SetName($eid, $eventName);
IPS_SetParent($eid, $eventParentID);

// do like console
IPS_SetHidden($eid, false);
IPS_SetIcon($eid, "");
IPS_SetDisabled($eid, false);

// event specific
IPS_SetEventTriggerValue($eid, 1);
IPS_SetEventTrigger($eid, $triggerType, $triggerVariableID);
IPS_SetEventScript($eid, $script);
IPS_SetEventTriggerSubsequentExecution($eid, $triggerContinuousExecution);

// activate
IPS_SetEventActive($eid, true); 

Vielen Dank!