Aktionsscript bringt Fehler - (Anfänger!)

Hallo,
ich bin bei IPS relativer Anfänger. Versuche gerade in der Visualisierung eine Solltemperatur zu ändern. Das Gerät ist ein KNX Heizungsaktor. Die ID ist da, auch der Wert der Solltemperatur vom KNX-Bus. Ich habe jetzt ein Aktionsscript

<?
//Dokumentation: https://www.symcon.de/service/dokumentation/konzepte/skripte/aktionsskripte/
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
?>

angelegt, dieses bringt aber Fehler.
In der Visu: „Variable is marked as read only“,
im Script: "

Notice:  Undefined index: VARIABLE in C:\IP-Symcon\scripts\17096.ips.php on line 4

Notice:  Undefined index: VALUE in C:\IP-Symcon\scripts\17096.ips.php on line 4

Warning:  Variable #0 existiert nicht in C:\IP-Symcon\scripts\17096.ips.php on line 4

Hier habe ich offensichtlich ein Verständnisproblem. Im Forum habe ich von „Fonzo“ ein Statement gefunden, daß ich allerdings nicht verstehe …

Variablen dienen in IP-Symcon der Anzeige eines Zustands wie der Tacho die Geschwindigkeit im Auto anzeigt. Weiterhin speichern Variablen den Status ab. Geschaltet wird in IP-Symcon eine Instanz über den Webfront oder eine Funktion, nicht über das Verändern einer Variable. Wenn Du schneller fahren willst würdest Du auch auf das Gaspedal drücken (Funktion) und nicht versuchen am Tacho zu drehen (Anzeige), daher auch der Hinweis (Read Only).

Vielleicht kann mir jemand mal auf die Sprünge helfen …
Danke
Gruß Wolfgang

Das Statement von Fonzo sagt, dass Variablen unterhalb von Instanzen nicht direkt mit einem Befehl aus einem Skript heraus verändert werden dürfen. Wenn Du die Solltemperatur verändern möchtest, musst Du diese direkt mit dem entsprechenden Befehl an die Instanz senden.

Dein Actionskript müsste also die übergeordnete Instanz der Statusvariable herausfinden und an diese dann mit dem korrekten Befehl den Wert übermitteln.

Miti IPS_GetParent und vermutlich EIB_Value solltest Du im Actionskript ans Ziel kommen.

Grüße,
Christoph

Schau mal hier: EIB/KNX — IP-Symcon :: Automatisierungssoftware

Dort ist ein vollständiges Beispiel für KNX bereits drin:


EIB_Value(IPS_GetParent($_IPS['VARIABLE']), $_IPS['VALUE']);

paresy

ich habe das Aktionsscript mal entsprechend abgeändert. Die Fehlermeldung bleibt sinngemäß aber gleich.

SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

an welcher Stelle im „Objektbaum“ müßte denn das Script eingehangen werden?. Ist das so richtig??

Hast du meinen Beitrag gelesen?

paresy

Hallo paresy,
schon, demnach müßte ja auch funktionieren -> EIB_Value(30004 , 30); wobei 30004 die übergeordnete „Instanz“ (s.o.) ist. Oder verstehe ich das komplett falsch…

Es kommt aber dann der Fehler: „Warning: Gruppe ist nicht für diese Funktion konfiguriert in C:\IP-Symcon\scripts\22563.ips.php on line 4“

Sorry, steige hier noch nicht durch …
Wolfgang

Hallo,

nimm da mal die ID der Variable, also 35270!

Edit: Vertan, muss ja die InstanzID sein, sorry!
Hast du folgendes beachtet?

Auszug aus der Doku:

Für jedes gewünschte Gerät, dass veränderbar sein soll, muss die entsprechende Variable mit diesem Aktionsskript verknüpft werden. Dies muss in der Konfiguration der jeweiligen Variable geschehen. Dazu muss die Variable doppelt angeklickt werden. Im Bereich „Profileinstellungen“ befindet sich die Auswahl des Aktionsskripts. Hier muss das eben erstelle Skript ausgewählt werden. Über „Eigenes Profil“ sollte zusätzlich ein passendes Profil (z.B. ~Temperature) ausgewählt werden.

Grüße,
Kai

Der Fehler ist nicht aus dem Actionscript zur Instanze 30004 , das hat laut deinem Screenshot die ID 49516 und dein Fehler kommt aus dem Script mit der ID 22563

dann kommt:

Warning: Instanz #35270 existiert nicht in C:\IP-Symcon\scripts\22563.ips.php on line 4

Die Variable ist aber da?! oder ist das keine Instanz? Was ist dann die zutreffende Instanz?

Wolfgang

Hallo,

sorry ich hatte mich vertan, habe den Beitrag oben bearbeitet.

Grüße,
Kai

Hallo Kai,
habe alles nach der Doku gemacht. Das Aktionsscript beinhaltet ja auch :

EIB_Value(IPS_GetParent($_IPS['VARIABLE']), $_IPS['VALUE']);  

Wenn ich das richtig verstehe wird sie übergeordnete ObjektId mit „IPS_GetParent($_IPS[‚VARIABLE‘)“ ermittelt und dann der Wert in „$_IPS['VALUE“ an das Gerät mit der Id 30004 gesendet.

Oder liege ich da falsch?

Gruß Wolfgang

Jetzt gehts!!!

Vielleicht ein Tipp von einem Nicht-IPS-Profi…

Ihr hattet ja alle recht. Aber ein Hinweis darauf, daß man ein KNX-Device als neue Instanz anlegen muß und hier das Aktionsscript eingehangen wird hätte mir das Leben wesentlich erleichtert…

Trotzdem Danke an alle die sich bemüht haben mir zu helfen!!

Die nächsten Probleme stehen schon vor der Tür :o

Gruß Wolfgang

In #4 existierte die Instanz doch schon in Deinem Screenshot?

Und, kleiner Tipp: positioniere das Skript nicht direkt unter der Instanz, sondern irgendwo anders. Du kannst es für die anderen Instanzen dieser Art auch verwenden.

ok, Danke!
Gruß Wolfgang