Wie baut man einen Wochenplan per Script mit "Führe Automation aus"

Ich suche eine Lösung, das ich per Script einen Wochenplan erstellen kann, das aber als Aktion nicht auf „Führe PHP Code aus“ steht, sonder auf „Führe Automation aus“ stehen soll:

So mache ich es:

$eid=IPS_CreateEvent(2);   
   IPS_SetEventScheduleAction($eid,0,$action1,"11071488","");
   IPS_SetEventScheduleAction($eid,1,$action2,"16711680","");
   IPS_SetEventScheduleGroup($eid, 0, 31); //Mo - Fr (1 + 2 + 4 + 8 + 16)
   IPS_SetEventScheduleGroup($eid, 1, 96); //Sa + So (32 + 64) 

In der Doku steht leider nichts darüber, wie das per Script ändern kann…

Wenn ich mir die Unterschiedlichen Wochenplaner anschaue sehe ich nur einen Unterschied:

„Führe PHP Code aus“ :

[1] => Array
(
[ID] => 1
[Name] => Zeitsteuerung
[Color] => 16711680
[ScriptText] =>
[ActionID] => {346AA8C1-30E0-1663-78EF-93EFADFAC650}
[ActionParameters] => Array
(
[SCRIPT] => <?php

//Skript hier einfügen
)

            )

„Führe Automation aus“ :

[1] => Array
(
[ID] => 1
[Name] => Zeitsteuerung
[Color] => 16711680
[ScriptText] =>
[ActionID] => {7938A5A2-0981-5FE0-BE6C-8AA610D654EB}
[ActionParameters] => Array
(
)

            )

Wäre auch schön, wenn man eine Konfig auch komplett als Json / Array übergeben könnte, wie man es auslesen kann…

Dann hätte man dieses Problem ja nicht :wink:

Die Funktion mit Ex am Ende erlaubt es die ActionID zu setzen:

Michael

Ja Danke, aber das hilft mir nicht weiter, weil sich nun die Frage stellt wo ich diese ID herbekommen soll.

So wie ich das bis jetzt verstehe, muss erst mit

IPS_SetEventScheduleAction($eid,0,$action1,„11071488“,"");

Anlegen und dann mit IPS_GetEvent($id); die [ActionID] => {7938A5A2-0981-5FE0-BE6C-8AA610D654EB} auslesen um danach mit

IPS_SetEventScheduleActionEx (integer $EreignisID, integer $WochenplanAktionsID, string $Name, integer $Farbe, string $AktionsID, array $AktionsParameter)

Es zu ändern ?

Viel zu umständlich gebaut! Und macht auch überhaupt keinen Sinn für mich, wenn ich doch schon ein Action Script habe, warum muss ich dem Wochenplaner, das so schmerzhaft vermitteln, das er das auch benutzen soll ?

Du brauchst IPS_SetEventScheduleAction gar nicht nutzen, sondern direkt IPS_SetEventScheduleActionEx mit der Aktion GUID „{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}“ (Diese ist fest definiert)

IPS_SetEventScheduleAction($eid, 0, $action1, "11071488", "{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}", []);

paresy

Hi, aber warum steht das nicht in der Doku, das diese AktionID fest definiert ist ? Wenn das gescheit dokumentiert wäre, musste man ja nicht so blöd fragen :wink:

Suche eine Befehl wie „IPS_SetEventScheduleAction“, allerdings soll kein string $Skriptinhalt als Parameter angegeben werden. Vielmehr soll einfach nur das zentrale Skript aufgerufen werden. Wenn den Wochenplan „von Hand“ konfiguriert heisst das wohl „Führe Automation aus“ anstatt „Führe PHP Code aus“. Gibt es so was?

Grüsse H-C

Für die Aktion ‚Führe Automation aus‘ siehe den Code von @paresy weiter oben.
Michael