Fehlermeldung bei Wochenplanerstellung (mithilfe der IPS-Doku)

Ich bin gerade dabei einen Wochenplan zu erstellen.

Dazu habe ich mir die IPS Doku angesehen:
http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/ereignisverwaltung/ips-seteventschedulegroup/
http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/ereignisverwaltung/ips-seteventschedulegrouppoint/
http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/ereignisverwaltung/ips-seteventscheduleaction/

Danke der Anleitung habe ich auch alles verstanden und mich gleich ans Werk gemacht.
–> Also ein Skript erstellt und mit folgenem Inhalt gefüllt. (Die vielen Kommentare sind für mich zur Info)


//Wochenplan Ereignis erstellen
$wochenplan = IPS_CreateEvent(2);

// Ereignis ID, Gruppen ID, Tage
//Anlegen von Gruppen
IPS_SetEventScheduleGroup($wochenplan, 0, 31); //Mo - Fr (1 + 2 + 4 + 8 + 16)
IPS_SetEventScheduleGroup($wochenplan, 1, 96); //Sa + So (32 + 64)

Beim ausführen im Skripteditor erscheint folgende Meldung:
Fatal error: Call to undefined function IPS_SetEventScheduleGroup() in D:\IP-Symcon\scripts\48494.ips.php on line 8

Ich habe schon nach allen möglichen Fehlern gesucht aber werde aus dieser Meldung einfach nicht schlau.

Ich vermute du hast nicht die 3.2er Beta installiert, oder?

paresy

Hallo parsey, danke dir für die schnelle Antwort.

Du hast recht… Problem gelöst.

Kaum macht man es richtig funktioniert es. Habe jetzt auf die BetaVersion geupdatet und es sind keine Fehler mehr vorhanden.

Mein Code:


//Wochenplan Ereignis erstellen
$wochenplan = IPS_CreateEvent(2);

// Ereignis ID, Gruppen ID, Tage
//Anlegen von Gruppen
IPS_SetEventScheduleGroup($wochenplan, 0, 31); //Mo - Fr (1 + 2 + 4 + 8 + 16)
IPS_SetEventScheduleGroup($wochenplan, 1, 96); //Sa + So (32 + 64)


//Ereignis ID, Gruppen ID, Schaltpunkt ID, Stunde, Minute, Sekunde, AktionsID
//Anlegen von Schaltpunkten für Gruppe mit ID = 0 (=Mo-Fr)
IPS_SetEventScheduleGroupPoint($wochenplan, 0, 0, 6, 30, 0, 0);	 // Heizung ab 06:30 (=Warm)
IPS_SetEventScheduleGroupPoint($wochenplan, 0, 1, 22, 30, 0, 1); // Heizung ab 16:00 (=Öko))


//Anlegen von Schaltpunkten für Gruppe mit ID = 1 (=Sa-So)
IPS_SetEventScheduleGroupPoint($wochenplan, 1, 0, 6, 30, 0, 0);	 // Heizung ab 06:30
IPS_SetEventScheduleGroupPoint($wochenplan, 1, 1, 22, 30, 0, 1); // Heizung ab 16:00


//Ereignis ID, Aktions ID, Name, Farbe, Skriptinhalt
//Anlegen von Aktionen
IPS_SetEventScheduleAction($wochenplan, 0, "Warm", 0xFF0000, " 	PHP Skript ohne PHP Tags (<? … ?>) ");
IPS_SetEventScheduleAction($wochenplan, 1, "Öko", 0x00FF00, " 	PHP Skript ohne PHP Tags (<? … ?>) ");

Hier verstehe ich nur nicht, warum es mir im Frontent bzw. im Objektbaum soviele Punkte anlegt, da ich eigentlich nur zwei Erwarte, sprich von Montag - Freitag und von Samstag + Sonntag.

An alle die Sich die gleiche Frage stellen, die Lösung:
Dieser Zustand kommt zustande, wenn man das Skript mehrfach ausführt.

Du erstellst jedes mal, wenn du das Skript startest, einen neuen Wochenplan. :slight_smile:

EDIT… Zu langsam :smiley:

paresy

In diesem Zusammenhang wird mir auch klar, warum es den Befehl zum löschen gibt. :smiley:

Eine Frage noch, d.h. ich muss jeden Tag bzw. die Zusammengefassten Tagen immer ab 0 Uhr progammieren,
sonst sieht es so aus wie hier, oder?

Die Zeiten die ich Angebe, sind doch immer solange aktuell bis das Nächste zeitfenster erreicht wird bzw. bis diese von der nächsten „Zeitphase“ und der zugehörigen Aktion abgelöst werden, oder?

Ist es auch möglich in folgendem Fall:


//Anlegen von Aktionen 
IPS_SetEventScheduleAction($EreignisID, 0, "Warm", 0xFF0000, "FHT_SetTemperature(\$_IPS['TARGET'], 22.5);");

Das Skript direkt per aufzurufen, per „IPS_RunScript(12345);“?
Also so, dass ich mein auszuführendes PHP Skript in einerm extra Skript habe und nicht direkt beim Anlegen einer Aktion angeben muss?


//Anlegen von Aktionen 
IPS_SetEventScheduleAction($EreignisID, 0, "Warm", 0xFF0000, IPS_RunScript(12345));

02
@Daste: Ja, du musst die Schaltpunkte ab 0h hinzufügen, da das WebFront es sonst falsch anzeigt. Beim Berechnen des nächsten Schaltpunktes wird das aber automatisch optimiert. Ist zur Zeit eine unzulänglichkeit der Anzeige im WF.

Das mit dem Skript hat steiner ja hier beschrieben, wie du wahrscheinlich schon herausgefunden hast:

paresy

Hallo parsey,
d.h. das Beispiel-Skript von steiner:

$id = $_IPS['ACTION'];
SetValue(36779 /*[Wochplan Ereignis\ID]*/, $id);
switch ($id) {
    case 1:
    // Befehle
    break;
   case 2:
    // Befehle
    break;
   case 3:
   // usw. ja nach Anzahl
    break;
}  

Muss ich dann hier so einfügen, richtig?

IPS_SetEventScheduleAction($EreignisID, 0, "Warm", 0xFF0000, $id = $_IPS['ACTION'];
SetValue(36779 /*[Wochplan Ereignis\ID]*/, $id);
switch ($id) {
    case 1:
    // Befehle
    break;
   case 2:
    // Befehle
    break;
   case 3:
   // usw. ja nach Anzahl
    break;
});

Wenn ja, habe ich das soweit auch Verstanden, das war mir nicht ganz klar.

Das heißt ich muss den PHP-Quellcode angeben und kann nicht per

IPS_RunScript(12345);

auf ein Script zugreifen?
Mir geht es nur darum, das ich den ganzen Quellcode nicht mit in dem Wochenplanscript habe sondern gesondert in einer Extra datei.

Du gibst als letzten Parameter einen leeren String an. (Also nix) Das Ereignis muss dann unterhalb von einem Skript sein und das Skript wird dann aufgerufen und hat den Inhalt, welchen steiner gepostet hat.

paresy