Wochenplan Ereignis: Status einer Variablen setzen

Das folgende Beispiel zeigt, wie man mit Hilfe des Wochenplan Ereignis den Status einer Boolean Variable setzt:
In der Spalte ‘Action’ wird einfach folgender Code eingefügt (Bild 1)

SetValue($_IPS['TARGET'], False);  // oder True

Weitere Hinweise zu den Systemvariablen findet ihr hier.
In diesem Beispiel, wie im Objektbaum zu sehen (Bild 2) wurde noch der Variablen ein Variablen ein passendes Profil spendiert. Zu den eingestellten Zeitpunkten im WebFront (Bild 3) wechselt dann die Variable entsprechend.

Legt man das Wochenplan Ereignis für ein Skript an, dann fehlt die Spalte ‘Action‘. Um herauszufinden welche Wochenplan-Aktion gerade ausgeführt wurde (das Skript wurde von ihm getriggert), kann man folgendes als Grundgerüst verwenden:

$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;
}

Ihr könnt den Wochenplan unter ‚Professional‘ in unserer Live-Demo ausprobieren.

MST

Wochenplan_Set.png

Wochenplan_Baum.png

Wochenplan_WF.png

Wochenplan ist ja super, aber diese Infos hier sollte man eventuell auch mal in die Doku übernehmen. Da steht leider nichts von irgend welchen Skripten etc.

schöne Grüße
Stephan

Zuerst: Die Darstellung des Wochenplan ist top und um x-faches einfacher als vorher mit divesen Schaltzeiten.

Aber ich hänge mit dem Script:
Im Wochenplan hab ich drei Zustände definiert und grafisch eingestellt im WF:
1: Komfort / 2: Standb/Urlaub / 3: Nachtabsenkung

Das nachstehende Script läuft zwar wenn der Wochenplan schaltet, aber es führt nichts aus, sondern wirft einen Fehler (siehe unten), auch im WF tut sich nix.

Hier mein Script unter dem das Wochenplan Ereignis hängt:

<?
$id = $_IPS['ACTION'];

// im Beispiel von steiner steht diese Zeile, aber ich weiss nicht was ich da statt 36779 einsetzen soll weil ich ja eigentlich gar keine Variable setzen will
//SetValue(36779 /*[Wochplan Ereignis\ID]*/, $id);

switch ($id) {
    case 1:
                       EIB_Value(20933 /*[11 Heizung\Betriebsart\OG Schlafen 2]*/, 1); //schaltet Betriebsart auf Komfort
                       EIB_Value(29698 /*[11 Heizung\KomfortSollwert\Schlafen 2]*/, 22); // stellt Komfort Temp ein
    break;
    
   case 2:
			EIB_Value(20933 /*[11 Heizung\Betriebsart\OG Schlafen 2]*/, 2); //schaltet auf Standby/Urlaub
    break;
    
   case 3:
			EIB_Value(20933 /*[11 Heizung\Betriebsart\OG Schlafen 2]*/, 3); //schaltet auf Nacht
    break;
}

?>

Die Fehlermeldung lautet:
Notice: Undefined index: ACTION in [11 Heizung\Betriebsart\OG Schlafen 2\Script Wochenplan] on line 2

Meine Fragen:

  • was hat die Fehlermeldung zu sagen. Dachte mit ACTION übernimmt man die ID aus dem Wochenplan auf die gerade geschaltet wird
  • fehlt mir an dieser Stelle was? SetValue(36779 /[Wochplan Ereignis\ID]/, $id);

Ich häng noch ein Bild an wie das bei mir im Objektbaum und im Wochenplan aussieht.

Hab nun mit allem möglichen (aber nicht dem richtigen) experimentiert.
Bin leider kein Programmierer sondern nur ein hartnäckiger User der mehr will. Geht auch schon vieles, aber bin mal wieder am Ende mit meinem Latein.

Hoffe das mir jemand helfen kann den Wochenplan zum laufen zu bringen.

Danke!!
Seppm

Wochenplan.jpg

Hast du das Skript über Execute aus der Konsole gestartet oder wirklich gewartet mit der Wochenplan als nächstes Schaltet?

paresy

ich hab den Wochenplan für jeden Test auf die nächste Minute gestellt.
Also der Modus war in der Visu auf Absenkung, dann für die nächste Minute im Plan für 1min auf Komfort gesetzt.
Wenn die Zeit da war konnte ich sehen das das Skript lief und dann der Fehler im unteren Bereich stand.
Bei direkt auslösen des Skriptes kommt der gleiche Fehler.
Was könnte ich noch liefern um meinen Fehler zu finden?

Dachte eigentlich das es schon mal ging gestern. Kann das stoppen von 3.2 und dann das starten mit 3.1 das verursachen.
Hatte gestern zur Fehlersuche mit dem vorher nicht auftauchenden Fehler mit der Variablen (Du hast mir mit meinem Case geholfen, danke!) wieder auf 3.1 geschaltet.
Das hab ich so gemacht das ich den 3.1 Symcon Folder den ich vor 3.2 gesichert hatte wieder auf original umbenannt hab und dann als 3.1 startete. Auf 3.2 kam ich dann wieder umgekehrt.
Den Dienst und Tray hab ich vorher jeweils gestoppt.
Neustart von Win7 hab ich aber nicht gemacht.

Würde mein Script vom Prinzip her denn stimmen so wie es gepostet ist?

Gruß Seppm

EDIT: Hab nun Win7 neu gestartet und der Fehler ist weg. Nun läuft es auch mit dem Wochenplan (nachdem ich noch die falschen „EIB_Value“ durch „EIB_Scale“ ersetzt habe). Kann ich noch was tun um die Fehlerursache zu finden? Aber vrmtl. war das ein Einzelschicksal.

Hallo seppm.

Durch den Fehler wird das gesamte Script NICHT weiter ausgeführt.
Was somit auch keine Veränderung an deiner Heizung erwirken kann.

Die Zeile besetzt eine Integervariable mit der „neuen“ ID deines Wochenplans.
Also nur zur Kontrolle. Brauchst du nicht, kannst du löschen oder auskommentieren.

Gruß
Lutz

Danke, das ich anstelle von "SetValue(36779 /[Wochplan Ereignis\ID]/, $id); " gar nichts brauche hab ich nun kapiert.
Ist dann praktisch wenn man sich mit einer Variable eine Anzeige machen will wo man ablesen kann auf was der Wochenplan zuletzt geschaltet hat.

Für mich ist das nun gelöst, bin nur nicht sicher ob der Fehler den ich mit der ‚Action‘ und der ID initial hatte nur mein Fehler war, aber ich vermute es.

Prima.
Ansonsten immer fragen, dafür ist das Forum ja da :slight_smile:

Schönes Wochenende
lueralba

Der neue Wochenplaner ist echt ne Bereicherung! Erleichtert einem wirklich viel und sieht gut aus!
Allerdings habe ich grad ein Problem beim erstellen.
Als ich das erste mal den Plan erstellt habe konnte ich unter Aktion direkt den Befehl eingeben und es hat auch alles funktioniert (wie im ersten Post beschrieben).
Wenn ich nun im nachhinein eine entsprechende Aktion eingeben will, erscheint ein neues Fenster „Befehl hinzufügen“ bei welchen ich nur vordefinierte auswählen kann. Leider ist mein Befehl nicht dabei und ich kann auch keinen anderen im nachhinein Editieren.
Ist auch bei Plänen, die ich neu erstelle. Das einfache Skript-Fenster kommt nicht mehr.
Ich habe nichts anders gemacht. Warum kam zuerst nur ein einfaches Eingabefeld für einen Befehl und nun ein Auswahlfenster mit „IPS-Funktionen“?

Hoffe, ihr könnt mir helfen!
Dankeschön!

EDIT: Habs raus gefunden. Wenn ich den Plan als Unterinstanz einer Variablen platziere, kann ich den Befehl direkt eingeben. Ist die Übergeordnete Instanz eine Kategorie, kann ich nur die vordefinierten Befehle auswählen.
Also erst alles unter einer Variablen erstellen und dann einfach dahin verschieben, wo man ihn hin haben möchte :wink:

Wobei ich derzeit die Steiner Variante übersichtlicher finde wo man den Wochenplan unter dem Script anlegt und dann über Switch case direkt seine Befehle hinter den Auswahlen sieht. Man kann die Scripte bzw. die Auswahlen dann auch leicht kopieren um sie ähnlich an anderer Stelle zu verwenden. Hab das jetzt für alle 17 Räume mit Heizung gemacht und geht super.
cheers Seppm

könnte es sein das es da eine änderung gab?
man kann keinen eigenen code mehr eintragen sondern nur noch die vordefinierten funktionen benutzen :frowning: das ist ja für an oder aus auch gut aber wenn man ein skript aufrufen will, ist das nicht von vorteil:(

Hängt der Wochenplan im Baum unter dem Script ?
Wenn nein, kann das nix werden :wink:
Michael

nein habe ich nicht.

Ich dachte eher das ich hier das jeweilige script aufrufen könnte. oder geht kein weg an der case sache vorbei?

Wenn du direkt eine Instanz (hier ja ZW) steuern willst, musst du ihn doch nur darunter hängen.
Imho kannst du dann auch nur die dazugehörigen Befehle auswählen.
Michael

Hallo,

Bei mir läuft der Wochenplan nicht mit einem HM-Device. Im WF sieht alles ganz normal aus, auch die nächst Schaltzeit wird korrekt angezeigt. Nur die Instanz wird nicht geschaltet. Im Log erscheint zum Schlatzeitpunkt
„Parsing Error: syntax error, unexpected ]
Error in script - on Line 1“
Action ist ganz normal HM_WriteValueBoolean, Parameter STATE, Wert True oder False.
Die Anordnung im Objektbaum ist unterhalb der Instanz, und nehme ich statt des Wochenplan die entsprechenden zyklischen Ereignisse, funktioniert´s
Wo ist da der Wurm drin?

nette Grüße
Sven

Abend Sven!

Magst du vlt. mal dein Skript hier posten, dass den Fehler ausspuckt? Und vlt. einen Screenshot von dem Teil der IPS-Console? Dann kann man sich leichter in dein Problem hineinversetzen…so ist es eher schwer…

Grüße,
Chris

Ich habe gerade fest gestellt, dass wenn ich den Wochenplan unterhalb einer Kategorie erstelle, kann ich in die Aktion schreiben. Wenn ich den Wochenplan unterhalb eines Dummymoduls erstelle bekomme ich die Aktionsauswahl.

Ist das so gewollt bzw. muss das so sein ?

Tritt der Fehler in der Windows oder der Linux Version auf? Ich habe gerade testweise ein Homematic Gerät an einen Wochenplan gehängt und dort gab es keinen Fehler.

Wenn du die Aktionen bearbeitest zeigt die IPS eine Vorschau des auszuführenden PHP codes. Schau mal ob da das öffnende und schließende Kommentar Symbol korrekt sind ( „/" und "/“ ).

@Gosef: Ja. (siehe: http://www.ip-symcon.de/service/dokumentation/konzepte/ereignisse/ )

Hatte ich gelesen, aber so nicht verstanden :frowning:

Dann verschiebe ich den Plan halt nach Erstellung :smiley:

Das funktioniert natürlich. Ich finde es allerdings unübersichtlich. Wenn du mehrfache Befehle in einer Aktion verwenden möchtest würde ich ein Skript mit „switch case“ unter die Instanz schieben, darunter den Wochenplan erstellen und dann den Wochenplan unter die Instanz linken und das Skript verstecken. Das klingt zwar komplizierter aber macht deine Befehle deutlich wartbarer.

Wir nehmen auch gerne Feedback an wenn etwas an dem betreffenden Dokuabschnitt unverständlich ist. Eigentlich haben wir diesen gerade frisch überarbeitet. Was genau hast du dort denn nicht verstanden?