Dokumentation
IPS_GetSnapshot
string IPS_GetSnapshot ()
Rückgabewert
Der Snapshot als JSON-kodierter String. Über die JSON-RPC Schnittstelle wird er direkt als Objekt geliefert.
Beschreibung
Diese Funktion ist nur für den internen Gebrauch vorgesehen und kann sich jederzeit ohne Ankündigung ändern oder entfallen.
Der Aufbau des Snapshots kann sich zwischen den Versionen von IP-Symcon ändern.
Die Funktion liefert den vollständigen aktuellen Zustand von IP-Symcon, den sogenannten Snapshot. Er basiert auf den gespeicherten Einstellungen (settings.json) und wird um Laufzeitinformationen ergänzt. Clients initialisieren sich damit und verfolgen anschließend die Änderungen über Nachrichten.
Der Snapshot enthält unter anderem folgende Einträge:
| Schlüssel | Beschreibung |
|---|---|
| timestamp | Nummer der letzten Nachricht, die im Snapshot berücksichtigt ist. Ab dieser Nummer können die folgenden Änderungen mit IPS_GetSnapshotChanges abgerufen werden |
| timezone | Zeitzone des Servers im IANA-Format (z.B. "Europe/Berlin"). Damit können Clients z.B. Graphen in der Zeitzone des Servers darstellen |
| language | Systemsprache von IP-Symcon (z.B. "de-DE") |
| server | Informationen zum Server: version, revision, platform, architecture, date und starttime |
| license | Informationen zur Lizenz: licensee, edition, limits (demo, variables, webfront, server, features) und expiration (demo, subscription) |
| options | Alle Spezialschalter mit ihrem aktuellen (current), ausstehenden (pending) und Standardwert (default) |
| compatibility | Version und Datum des Servers (version, date). Nur aus Kompatibilitätsgründen vorhanden |
| objects | Alle Objekte. Der Schlüssel ist "ID" gefolgt von der ObjektID (z.B. "ID12345"). Die typspezifischen Daten stehen unter data |
| profiles | Alle Variablenprofile. readOnly ist bei Systemprofilen (Name beginnt mit "~") TRUE |
| templates | Alle Vorlagen für Darstellungen |
Weitere Einträge der gespeicherten Einstellungen, z.B. sync oder permissions, werden unverändert übernommen.
Jedes Objekt unter objects enthält seine allgemeinen Eigenschaften (z.B. name, ident, parentID, position, type) sowie die Zusammenfassung (summary). Unter data werden je nach Objekttyp Laufzeitinformationen ergänzt: bei Instanzen status und visualizationType, bei Variablen isLocked, profile und customProfile, bei Skripten crc und size, bei Ereignissen nextRun und bei Medien crc, size und isAvailable.
Der Snapshot wird unkomprimiert als JSON geliefert. Über HTTP wird die Antwort mit gzip komprimiert, sofern der Client dies im Header "Accept-Encoding" angibt.
Ist der Spezialschalter "DebugDisableSnapshot" aktiv, schlägt die Funktion mit "This function is disabled for debugging purposes!" fehl.
Beispiel
// Snapshot abrufen und einige Informationen ausgeben
$snapshot = json_decode(IPS_GetSnapshot(), true);
echo "Letzte Nachricht: " . $snapshot['timestamp'] . "\n";
echo "Zeitzone: " . $snapshot['timezone'] . "\n";
echo "Objekte: " . count($snapshot['objects']) . "\n";
echo "Profile: " . count($snapshot['profiles']) . "\n";
// Objekte sind unter "ID" gefolgt von der ObjektID abgelegt
print_r($snapshot['objects']['ID12345']);
/* liefert z.B.:
Letzte Nachricht: 990
Zeitzone: Europe/Berlin
Objekte: 166
Profile: 111
Array
(
[data] => Array
(
[action] => 54227
[customAction] => 0
[customPresentation] => Array
(
)
[customProfile] =>
[isLocked] =>
[lastChange] => 1789241479
[lastUpdate] => 1790080547
[presentation] => Array
(
[MAX] => 254
[MIN] => 1
[PERCENTAGE] => 1
[PRESENTATION] => {6B9CAEEC-5958-C223-30F7-BD36569FC57A}
[SUFFIX] => %
[USAGE_TYPE] => 2
)
[profile] =>
[type] => 1
[value] => 254
)
[disabled] =>
[hidden] =>
[hiddenMaximize] =>
[hiddenTitle] =>
[icon] =>
[ident] => Brightness
[info] =>
[name] => Helligkeit
[parentID] => 23456
[position] => 0
[readOnly] =>
[summary] =>
[type] => 2
)
*/