[Modul] UniversalTrigger - Alles was ein normales Ereignis nicht kann



IPSUniversalTrigger

Dokumentation

Inhaltsverzeichnis

[ol]
[li]Funktionsumfang[/li][li]Voraussetzungen[/li][li]Installation[/li][li]Universaltrigger (single)[/li][li]Universaltrigger (group)[/li][li]Variablen im Ziel-Script[/li][li]Parameter / Modul-Infos[/li][li]Anhang[/li][li]Lizenz[/li][/ol]
1. Funktionsumfang

Ermöglicht es auch Änderungen in IP-Symcon zu reagieren, welche nicht über normale Ereignisse oder das Event-Control abgebildet werden.
So können mit den enthaltenden Modulen PHP-Scripte gestartet werden wenn z.B:

[ul]
[li]Ein Objekt verschoben wurde[/li][li]Der Name des Objektes verändert wurde[/li][li]Die Sichtbarkeit eines Objektes sich geändert hat[/li][li]Die Einstellungen einer Instanz verändert wurden[/li][li]Ein Ereignis de- oder aktiviert wurde[/li][li]Ein Mediaobjekt aktualisert wurde[/li][li]Ein Link sich geändert hat[/li][/ul]
u.v.m.
2. Voraussetzungen

[ul]
[li]IPS ab Version 4.3[/li][/ul]
3. Installation

IPS 4.3:

Bei privater Nutzung unter IPS 4.3:
Über das Modul-Control folgende URL hinzufügen.
git://github.com/Nall-chan/IPSUniversalTrigger.git
Bei kommerzieller Nutzung (z.B. als Errichter oder Integrator) wenden Sie sich bitte an den Autor.
4. Universaltrigger (single)

Unter Instanz hinzufügen ist der ‚Universaltrigger (single‘) unter den Kerninstanzen ‚(Kern)‘ zu finden.
Jeweils einmal als Typ Single und Group.
Nach dem Anlegen der Instanz ist diese noch entsprechend zu konfigurieren.

  • [li]Script:[/li]Ziel-Script welches ausgeführt wird, wenn der zu Überwachende Zustand eintritt.
    [li]Objekt:[/li]Ein beliebiges Objekt (außer 0) welche überwacht werden soll.
    [li]Nachricht:[/li]Die Nachricht auf welche reagiert werden soll, wenn sie beim Objekt eintritt.

Hinweis:
Es wird nicht validiert ob die Einstellungen sinnvoll bzw. überhaupt möglich sind.
So kann als Objekt eine Kategorie ausgewählt werden, und als Nachricht ‚Script defekt‘.
Dieser Zustand ist bei einer Kategorie aber niemals gegeben.
Somit wird das Ziel-Script auch nie gestartet.
5. Universaltrigger (group)

Die Konfiguration und die Funktion sind nahezu identisch zu der Variante ‚Single‘.
Hier werden die Objekte und Nachrichten in einer Liste eingetragen.
So können z.B. für das gleiche Objekt mehrere Nachrichten, oder für die gleichen Nachrichten mehrere Objekte unter einem Ziel-Skript zusammengefasst werden.
6. Variablen im Ziel-Script

Anhand der PHP-Variable $_IPS ist es möglich im Ziel-Script auf alle Werte der Nachrichten und des Ereignissen zuzugreifen.
Folgende Felder im Array der PHP-Variable $_IPS stehen im Ziel-Script zur Verfügung:
|
|
|SELF|integer|Objekt ID des Skriptes|
[TR=„bgcolor: #F6F8FA“]
[TD=„align: center“]INSTANCE[/TD]
[TD=„align: center“]integer[/TD]
[TD=„align: center“]Instanz ID des auslösenden Universaltrigger[/TD]
[/TR]|EVENT|integer|Objekt ID von welchem die Nachricht stammt|
[TR=„bgcolor: #F6F8FA“]
[TD=„align: center“]VALUE[/TD]
[TD=„align: center“]integer[/TD]
[TD=„align: center“]Die Nachricht welche das Skript gestartet hat (siehe 1*)[/TD]
[/TR]|DATA|string|JSON codiertes Array welches alle Daten der Nachticht enthält (siehe 2*)|
[TR=„bgcolor: #F6F8FA“]
[TD=„align: center“]TIMESTAMP[/TD]
[TD=„align: center“]integer[/TD]
[TD=„align: center“]Zeitpunkt der Nachricht als UnixTimestamp[/TD]
[/TR]|SENDER|string|immer ‚UniTrigger‘|

Das Ziel-Script kann anhand von ‚EVENT‘ und ‚VALUE‘ unterschiedliche Aktionen ausführen.
Dies ist gerade bei beim ‚Universaltrigger (group)‘ sehr hilfreich.

Hinweis 1:

Die Übersetzung der Werte der Nachrichten sind hier zu finden:
Nachrichten
Beispiel:
Übergeordnetes Objekt hat sich geändert entspricht dem Wert 10403.

Hinweis 2:

Das Array kann aus $_IPS[‚DATA‘] einfach mit json_decode decodiert werden:

$Data = json_decode($_IPS['DATA'],true);

Der Inhalt von ‚DATA‘ unterscheidet sich je nach Nachricht und ist nicht dokumentiert.

Hinweis 3:

Ausgaben des Ziel-Skript werden nur im Meldungsfenster bzw. LogFile ausgegeben, da das Script immer durch IPS gestartet wird und niemals durch die Console.

Hinweis 4:

Beispiel um festzustellen welche Werte in $_IPS und $_IPS[‚DATA‘] enthalten sind:

var_dump($_IPS); // Erstes Array unter Meldungen
$Data = json_decode($_IPS['DATA'],true);
var_dump($Data); // Zweites Array unter Meldungen

Ausgabe:

array(8) {
  ["SELF"]=>
  int(30118)
  ["EVENT"]=>
  int(23782)
  ["VALUE"]=>
  int(10804)
  ["INSTANCE"]=>
  int(35040)
  ["TIMESTAMP"]=>
  int(0)
  ["DATA"]=>
  string(7) "[false]"
  ["SENDER"]=>
  string(10) "UniTrigger"
  ["THREAD"]=>
  int(18)
}
array(1) {
  [0]=>
  bool(false)
}

7. Parameter / Modul-Infos

GUIDs der Instanzen (z.B. wenn Instanz per PHP angelegt werden soll):
|
|
|Universaltrigger (single)|{4FA5F724-D93B-457B-94EC-E80CFF5415D8}|
[TR=„bgcolor: #F6F8FA“]
[TD=„align: center“]Universaltrigger (group)[/TD]
[TD=„align: center“]{A79F745E-FFB8-4D69-BD25-6914AC5A50AE}[/TD]
[/TR]


Eigenschaften von Universaltrigger (single):

|
|
|ScriptID|integer|0|Ziel-Script|
[TR=„bgcolor: #F6F8FA“]
[TD=„align: center“]ObjectId[/TD]
[TD=„align: center“]integer[/TD]
[TD=„align: center“]0[/TD]
[TD=„align: center“]Objekt ID welches überwacht wird[/TD]
[/TR]|MessageId|integer|10403|Wert der Nachricht auch welche reagiert wird|


Eigenschaften von Universaltrigger (group):

|
|
|ScriptID|integer|0|Ziel-Script|
[TR=„bgcolor: #F6F8FA“]
[TD=„align: center“]Trigger[/TD]
[TD=„align: center“]string[/TD]
[TD=„align: center“][/TD]
[TD=„align: center“]Konfiguration von Objekten und Nachrichten als JSON codiertes Array[/TD]
[/TR]

8. Anhang

Changlog:
Version 1.0:

[ul]
[li]Erstes Release[/li][/ul]
10. Lizenz

CC BY-NC-SA 4.0

Gerade gesehen das die Doku hier durch das Forum Update etwas defekt ist.
Fix dazu kommt morgen :sweat_smile:
Michael