Variable im Baum anlegen

Hallo zusammen,
ich möchte gerne in einem Script eine neue Variable im IPS-Baum anlegen.

Die Funktion

IPS_CreateVariable ( „Name“ );

lässt keine Vorgabe des Ortes im Baum zu. Habe in einem älteren Thread einen Tip zum Verschieben einer Variable im Baum gefunden.

LOC_SetLocation_Variable ( ??? );

Hat jemand vielleicht eine Beschreibung für die Nutzung der Funktion?

… andere Ideen sind natürlich auch Willkommen…

Grüße, a.he

Hallo a.he,

ich gehe davon aus, dass Du die Version 2 von IP-Symcon verwendest.

Dementsprechend musst Du auch die Syntax dieser Version verwenden. Die Befehlsreferenz findest Du [u]hier[/u].

  1. Variable anlegen: IPS_CreateVariable(Typ)
  2. Parent-Objekt setzen: IPS_SetObject(ObjectID, ParentID)

Gruß
HJH

Hallo HJH,
wie Du schon richtig festgestellt hast verwende ich die Version 2 (sorry fehlende Angabe).

Besten Dank für den Tip, genau diese Funktion habe ich gesucht und offensichtlich nicht gefunden. Wobei Du wahrscheinlich in deiner Mail
die Funktion
IPS_SetParent (integer $ObjektID, integer $ParentID);

meintest ? IPS_SetObject() habe ich in der Doku jetzt nicht gefunden.

Grüße a.he

Hallo a.he,

ja, Du hast Recht. Das habe ich verwechselt.

Gruß
HJH

Hallo HJH,
habe da noch eine Frage:

Habe in einem anderen Thread die Funktion

IPS_GetUpTime(???);

entdeckt. Leider ist sie nicht in der online Doku beschrieben.

Alte V1 Funktion oder zur Benutzung freigegeben?
Wenn freigegeben dann hätte ich gerne nähere Infos über
die Funktion.

Wäre eine nette Optimierung gegenüber dem Auswerten
von IPS_GetVariable().

Grüße a.he

GetUptime liefert die die Zeit in als Unix-Zeitstempel, zu der IP-Symcon gestartet wurde. Hat nichts mit der Updatezeit einer Variable zu tun.

paresy

Hallo a.he,
hast du Dir schon mal das Funktionsscript heruntergeladen und getestet http://www.ip-symcon.de/forum/f53/ip-symcon-variablenzugriffe-ueber-namen-7231/#post59700

… damit kannst Du Variablen im Objketbaum beliebig anlegen

<?
include_once ('./common_function.php');

//Setzt die Variable auf 1, 
//sollte diese noch nicht existieren wird diese erzeugt 
//(fehlende Objekthierachien werden durch Kategorieebenen aufgefüllt)
SetValueIntegerByNameCC("AAA/BBB/CCC/DDD/TESTVAR_ABSOLUT_PFAD", 1);

SetValueIntegerByNameCC("/XXX/TESTVAR_RELATIVER_PFAD___EBENE_UNTERHALB_DES_SCRIPTES", 5);
SetValueIntegerByNameCC("./YYY/TESTVAR_RELATIVER_PFAD___EBENE_DES_SCRIPTES", 11);
SetValueIntegerByNameCC("../ZZZ/TESTVAR_RELATIVER_PFAD___EBENE_OBERHALB_DES_SCRIPT", 12);


//... oder auch so

//hier muss die Objekthierachie "AAA" schon existiern, 
//kann man aber auch mit "CheckCreateCategory" erzeugen
CheckCreateVariable("AAA/TESTVAR1",1);
?>

P.S.: IPS_GetUpTime liefert Dir einfach den UNIX-Timestamp wenn der IPS-Dienst gestartet wurde

echo IPS_GetUpTime();
echo date("d.m.Y H:i:s",IPS_GetUpTime());

//Ausgabe
1242414849
15.05.2009 21:14:09

… vermute aber das Du eher eine Funktion für den Zeitstempel der Variable sucht’s ==> dazu empfehle ich Dir die Funktion „IPS_GetObject“ IPS_GetObject - IP-Symcon :: Automatisierungssoftware und „IPS_GetVariable“ IPS_GetVariable - IP-Symcon :: Automatisierungssoftware

==> dazu schau dir mal in meinen Funktionsscript die Funktion „GetAllVariablesOfObjectHierachieForVisual“ an da findest Du ein Beispiel wie man den Updatezeitpunkt / Änderungszeitpunkt ermittelt

:slight_smile: … Parsey war wieder mal schneller
tgusi74

Hallo a.he,
habe eine neue Funktion eingebaut „GetVariableByName“ damit kann Du dir zu einer Variable ein INFO_ARRAY holen

<?
include_once ('./common_function.php');

$VarInfoArray = GetVariableByName("AAA/BBB/CCC/DDD/TESTVAR_ABSOLUT_PFAD");

echo $VarInfoArray['ID'] . "
";
echo $VarInfoArray['NAME'] . "
";
echo $VarInfoArray['VALUE'] . "
";
echo $VarInfoArray['TS_UPDATE'] . "
";
echo $VarInfoArray['TS_CHANGE'] . "
";
echo $VarInfoArray['TS_UPDATE_UNIX'] . "
";
echo $VarInfoArray['TS_CHANGE_UNIX'] . "
";

/* Ausgabe
45226
TESTVAR_ABSOLUT_PFAD
1
15.05.2009 23:34:43
15.05.2009 21:42:56
1242423283.093
1242416576.109
*/
?>

tgusi74

Hallo Paresy, hallo Tgusi74,
besten Dank für die Info. Habe die Funktion nicht ansatzweise im Bereich „Programminformationen“ vermutet und dem entsprechend nicht in der Doku entdeckt.

Der Ablauf mit IPS_GetVariable() und anschließender Auswertung des Array ist mir mitleweile klar und habe ich auch schon ausprobiert. Tgusy: werde mir gerne Dein Script ansehen. Ich selber bin gerade erst einmal dabei einen Teil der IPS-Lib auszuprobieren um den Fundus kennenzulernen und mir ein paar eigene Strategie Gedanken zurecht zu legen.

Besten Dank, Grüße a.he