Dokumentation ergänzen?

Hallo zusammen,

in der Dokumentation fallen mir gerade ein paar Punkte auf, die noch etwas stiefmütterlich behandelt sind:

Das ISDN-Modul erscheint noch nicht, aber per Suche findet man zwei Seiten, die es wohl mal werden sollten.

Der Zugriff auf Metadaten von Variablen und Objekten ist nur teilweise beschrieben: Wie greift man auf die Informationen zu, die in der Objektübersicht standardmäßig erscheinen: Typ und Aktualisiert?

Es mag sein, daß diese Informationen im Wiki oder im Forum irgendwo verstreut sind. Spätestens wenn sie dort zweimal behandelt wurden, sollten sie den Weg in die Doku finden. denn wenn ich für so grundlegende Dinge an drei verschiedenen Stellen und vielleicht noch per Google suchen muß und endlose Forumartikel lesen muss, steigt der Zeitaufwand zum Programmieren unverhältismäßig an.

Danke & Grüße,
moishe

IPS_GetObject
IPS_GetInstance

Dort sind alle Daten erklärt.

Das ISDN Modul ist hier erklärt: http://www.ip-symcon.de/forum/f18/isdn-modul-verwenden-5071/

paresy

Wenn Du damit

[ul]
[li]Dokumentation -> Befehlsreferenz -> Objektverwaltung -> IPS_GetObject
[/li][li]Dokumentation -> Befehlsreferenz -> Instanzverwaltung -> IPS_GetInstance[/ul]
[/li]meinst, finde ich dort trotzdem die gesuchten Infos nicht. Ich versuche, meine Frage nochmal genauer zu formulieren:

Wie kann ich aus einer ObjectID den Objekt-Typ, wie er in der Objektbaum-Ansicht der Verwaltungskonsole angezeigt wird gewinnen (also „FHT“, „HMS“, ISDN Module", „Media Player“, „Text To Speech“, „Skript“, „FTDI“ etc.)?
Hintergrund: Wenn ich über die komplette Objektliste iteriere, möchte ich zuverlässig wissen, mit welcher Art Objekt ich es zu tun habe, um es auf die richtige Art und Weise anzufassen. Dazu ist der Objektname nicht geeignet, da er variabel ist.

Die Frage nach dem Aktualisierungszeitstempel hat sich erübrigt - den gibt’s wohl nur bei Variablen als

$Var = IPS_GetVariable($VarID); 
$UpdateTimestamp = $Var[VariableUpdated];

Richtig?

Das hatte ich bereits gelesen, ist aber schon ein wenig unübersichtlicher als eine Modulreferenz, die ich unter

[ul]
[li]Dokumentation -> Befehlsreferenz -> Modulreferenz -> ISDN Module -> ISDN_Connect
[/li][li]Dokumentation -> Befehlsreferenz -> Modulreferenz -> ISDN Module -> ISDN_GetConnectionInfo
[/li][li]Dokumentation -> Befehlsreferenz -> Modulreferenz -> ISDN Module -> ISDN_AcceptCall
[/li][li]Dokumentation -> Befehlsreferenz -> Modulreferenz -> ISDN Module -> ISDN_PlayWave
[/li][li]Dokumentation -> Befehlsreferenz -> Modulreferenz -> ISDN Module -> ISDN_Disconnect[/ul]
[/li]erwartet hätte und die im CMS offensichtlich mal angefangen wurde:

[ul]
[li]ISDN_Connect
[/li][li]ISDN_PlayWave[/ul]
[/li]
Danke & Grüße,
moishe

IPS_GetInstance - IP-Symcon :: Automatisierungssoftware

IPS_GetInstance -> ModuleInfo -> ModuleName

paresy

Danke Paresy, jetzt hab’ ich’s verstanden.

Hallo Paresy, einen hab’ ich noch:

Wie kann ich von einer $VariableID auf die $ObjectID schließen, der sie angehört?

Ich nehme an, eine große Iteration über IPS_GetInstanceList und IPS_GetStatusVariableIdents und der Aufbau eines eigenen Referenzenbaums wäre eine Möglichkeit, aber die hätte ich gerne vermieden.

Danke,
moishe

Kriegst Du aus dem Array

IPS_GetObject ( integer $ObjektID )

–> Key ParentID

jwka

P.S.: Mit der Doku habe ich auch schwer gekämpft und kämpfe auch heute noch damit. Es ist halt eine Referenz und keine Doku.

M.E. ist bei vielen Sachen auch nicht ganz durchgängig abgebildet worden und bei vielem gilt: Wenn man weiss, wo es steht, dann findet man es auch. Nur, dann braucht man es meist nicht mehr.

Für einiges gibt es eine Funktion für anderes nicht etc. Hier und da sicher eine Geschmacksfrage, aber gerade für die PartenID hätte ich z.B. eine Funktion bereitgestellt ( IPS_GetParentID[$id] ) denn es gibt ja auch ne „IPS_GetChildrenIDs“, die man sich selber über das Sub-Array „Children“ holen kann…

Den Request dafür habe ich mir gespart, weil die Antwort wohl lauten würde „kannst Du Dir selber schreiben“ …

Du bekommst über IPS_GetObject die ParentID der Variable.

IPS_GetParentID wird es in der 2.2 übrigens geben :slight_smile:

paresy

Prima!

jwka

Danke an alle Beteiligten! Es funzt. Hier ist das Ergebnis. Es kommt ohne jegliche ausdrückliche Object-IDs aus.


	// Alle Variablen abgrasen und deren Änderungen ausgeben oder twittern
   include 'twitter/twitter.class.php';
	$userName="twitteruser";
	$password="twitterpass";
	$twitter = new Twitter($userName, $password);
	$lastlook=time()-5*60; // entspricht der Aufruffrequenz des Skripts
	$output='';
	
	$varids=IPS_GetVariableList();
	foreach ($varids as $varid ){
	   $var = IPS_GetVariable (  $varid );
		if( $var["VariableChanged"] >= $lastlook ){
			$output='';
			$obj=IPS_GetObject ($varid);
			$parid = $obj["ParentID"]; 
			$output=$output.IPS_GetName($parid).": "; // VarParentName
			$output=$output.IPS_GetName($varid).": "; // VarName
			switch($var["VariableValue"]["ValueType"]){
				case 0:
					$output=$output.(string)$var["VariableValue"]["ValueBoolean"];
				break;
				case 2:
					$output=$output.$var["VariableValue"]["ValueFloat"];
				break;
			}
			$output=$output.".
";
			print $output;
			$twitter->send($output);
		}
	}

Um Ergänzungen des switch-Statements für andere Wertetypen wäre ich dankbar.

Grüße,
moishe