[Modul] NoTrigger (Variablenüberwachung) - Überwachen von IPS-Variablen auf ausbleibende Aktualisierung oder Veränderung

SDK Version License
Version Check Style Run Tests
Spenden

Variablenüberwachung (NoTrigger)

Überwachen von IPS-Variablen auf ausbleibende Aktualisierung oder Veränderung.

Dokumentation

Inhaltsverzeichnis

1. Funktionsumfang

Überwachen von IPS-Variablen auf ausbleibende Aktualisierung oder Veränderung.
Grundidee war festzustellen ob bestimme (Status)Variablen regelmäßig aktualisiert werden, um dann, bei ausbleiben der Aktualisierung, entsprechend hierauf reagieren zu können.

Beispiele:

– Homematic-Rauchmelder
Alle paar (5?) Tage senden diese ihren Status an die CCU/Lan-Adapter. Sollte ein Melder dies nicht mehr machen, sollte eine eMail versendet werden.

– EM1000 / CUL
Alle 5 Minuten werden die Datensätze von den Geräten gesendet, sollte dies nicht mehr passieren, soll die I/O Instanz einmal geschlossen und neu geöffnet werden.

– Daten von einem Gerät im Netzwerk per Push oder Poll.
Alle 10 Sekunden kommen Daten per (beliebiges Netzwerkgerät) rein. Im Fehlerfall soll ein Script das Gerät per Telnet neu starten.

– eMail-Abfrage
Alle 5 Minuten soll IPS eMails prüfen. Ändert sich der Zeitstempel der Variable ‚Last message‘ 15min lang nicht, wird eine Meldung auf dem Webfront ausgegeben.

– 1Wire / ModBus
Alle 10 Sek werden Werte gelesen. Ändern ein Sensor sich 60 Sekunden lang nicht ist entweder abgeklemmt oder defekt => Meldung per eMail

– Erinnerung Lüften
Einmal am Tag müssen drei Fenster zum Lüften geöffnet werden, nach 36h wird eine Meldung erzeugt das noch nicht gelüftet wurde.

etc…

Die Funktion besteht im wesentlichen darin festzustellen ob sich eine Variable ändert bzw. aktualisiert.
Sollte Dies innerhalb der konfigurierten Intervall-Zeit geschehen, wird keine Aktion ausgelöst.
Nach Ablauf der Intervall-Zeit wird, je nach Konfiguration, eine Statusvariable gesetzt und die konfigurierten Aktionen ausgelöst.
Über die konfigurierbaren Aktionen können dann weitere Maßnahmen und Steuerungen erfolgen (Ablaufplan starten, Script starten, WFC_Notification / eMail / Steckdose aus & einschalten etc).

2. Voraussetzungen

  • IPS ab Version 6.1

3. Installation

Über den ‚Module-Store‘ in IPS das Modul ‚Variablenüberwachung‘ hinzufügen.
Bei kommerzieller Nutzung (z.B. als Errichter oder Integrator) wenden Sie sich bitte an den Autor.

Module-Store

4. Einrichten der Instanzen in IP-Symcon

1. Variablenüberwachung (single)

Unter Instanz hinzufügen ist die Variablenüberwachung unter ‚Nall-chan‘ oder dem Schnellfilter zu finden.
Jeweils einmal als Typ Single und Group.

Instanz erstellen

Nach dem Anlegen der Instanz ist diese noch entsprechend zu konfigurieren.

  • Aktiv :
    Um die Überwachung zu aktivieren bzw. desaktivieren.
  • Variable:
    Die zu überwachende Variable auswählen.
  • Prüfmodus:
    Legt fest ob sich der Wert der Variable(n) verändert haben muss, oder ob es reichte das eine Variable aktualisiert wurde auch wenn sich der Wert nicht geändert hat.
  • Intervall:
    Der Zeitraum in Sekunden in dem sich die Variable(n) nach dem unter Prüfmodus festgelegten Modus geändert haben muss. Wird dieser Zeitraum überschritten, wird die Statusvariable ‚STATE‘ gesetzt und/oder das Ziel-Script gestartet. (max. Wert 599000000)
  • Statusvariable ‚STATE‘ verwenden:
    Hiermit kann eine Statusvariable der Instanz zu/weg geschaltet werden. (z.B. zur Visualisierung oder Abfrage in einem Ablaufplan).
  • Neustart-Verzögerung:
    Grundsätzlich wird immer ein Alarm ausgelöst, wenn die letzte Änderung/Aktualisierung der zu überwachenden Variable länger her ist als der eingestellte Intervall. Dies kann bei einem Dienst-Neustart zu falschen Meldungen führen.
    Beispiele wo keine Verzögerung nötig ist sind z.B. Geräte welche sich nur einmal pro Woche / Monat etc. melden sollten, da es hier sehr unwahrscheinlich ist das ein Neustart genau in diesen Zeitpunkt fällt wo sich die Variable ändern sollte. Hier ist es sogar ungünstig mit einer Verzögerung zu arbeiten, weil dann vielleicht erst nach 10 statt 5 Tagen auffällt dass der Rauchmelder schon lange nicht mehr sendet.Bei z.B. 1-Wire/ModBus Geräten und anderen Instanzen welche IPS mit einem internen Timer ausließt, sollte die Verzögerung auf Intervall stehen. Somit hat IPS beim starten erst mal Zeit die Geräte abzufragen bzw. die Daten zu lesen, bevor es zu einen Alarm kommt.
    (IPS-Neustart 30 Sekunden, letzter Wert vor Neustart ist 0sek, Intervall ist 5 Sekunden. => Startet IPS, gibt es ohne eingestellter Verzögerung gleich einen Alarm, da der letzte Wert vor über 30 Sekunden gelesen wurde und somit größer als der eingestellte Intervall von 5 Sekunden ist.)
    Die Verzögerung ‚bis Aktualisierung‘ sollte für Geräte genutzt werden, wo man nicht genau weiß wann Sie nach einen Neustart wieder mit IPS kommunizieren. Die Überwachung und somit die Intervall-Zeit beginnt erst, wenn die Variable geändert/aktualisiert wurde.
    Dies birgt aber auch ein Risiko: Sollte nach dem Neustart die Variable nie geändert/aktualisiert werden, wird auch nie ein Alarm erzeugt.
  • Mehrfachauslösung:
    Normalerweise wird nur beim Übergang von Ruhe/Alarm und Alarm/Ruhe die eigene Statusvariable gesetzt und alle Aktionen gestartet.
    Wird die Mehrfachauslösung aktiviert, werden auch bei Updates von Ruhe/Ruhe und Alarm/Alarm alle Aktionen ausgelöst.Konfiguration Single

2. Variablenüberwachung (group)

Alle zu überwachenden Variablen sind immer ODER verknüpft, es reicht also wenn Eine sich nicht innerhalb der Intervallzeit ändert/aktualisiert um eine Alarm-Meldung zu generieren. Im Umkehrschluss heißt dies dass die Ruhemeldung nur auslöst, wenn alle überwachten Variablen sich innerhalb der Intervallzeit ändert/aktualisiert haben.

Die Konfiguration und die Funktion sind ähnlich. Folgende Einstellungen unterscheiden sich:

  • Variable:
    In der Liste die zu überwachenden Variablen auswählen.
  • Statusvariable ‚STATE‘ verwenden:
    Der Zustand der Variable immer eine ODER Verknüpfung auf die Alarmmeldungen Somit wird die Variable ‚true‘ sobald eine Variable einen Alarm auslöst und ‚false‘ wenn alle Variablen keinen Alarm mehr auslösen.
  • Mehrfachauslösung:
    Wird die Mehrfachauslösung aktiviert, werden für jede überwachte Variable der Übergang Ruhe/Alarm und Alarm/Ruhe die Aktionen ausgelöst.
    Wird die Mehrfachauslösung deaktiviert, wird nur der erste Alarm und die letzte Ruhemeldung zum auslösen der Aktionen benutzt.

Konfiguration Group

5. Aktionen konfigurieren

Hier werden die gewünschten Aktionen hinterlegt, welche ausgeführt werden sollen.
Bei jeder Aktion kann noch ausgewählt werden ob sie ‚Bei Auslösung‘, ‚Bei Rücksetzen‘ oder ‚immer‘ ausgeführt werden soll.
Für Aktionen werden entsprechende Parameter übergeben, welche z.B. bei ‚Führe Automation aus‘ in einem PHP-Script zur Verfügung stehen.

6. Variablen im PHP-Script bei ‚Führe Automation aus‘

Folgende Felder im Array der PHP-Variable $_IPS stehen im Ziel-Script zur Verfügung:

Index Typ Beschreibung
VALUE boolean Aktueller Status wobei True = Alarm und False = Ruhe ist
OLDVALUE boolean vorheriger Wert
EVENT integer Instanz ID der auslösenden Variablenüberwachung
VARIABLE integer ID der Variable welche die Auslösung verursacht hat
SENDER string ‚NoTrigger‘ FixString

Ein PHP-Script sollte immer den Wert ‚VALUE‘ abfragen, damit unterschieden werden kann ob es sich um eine Alarm-Meldung oder Ruhe-Meldung handelt, falls bei ‚Auslösendes Ereignis‘ ‚immer‘ eingestellt wurde:

if ($_IPS[‚VALUE‘]) { // Alarm wurde ausgelöst } else { // Ruhemeldung nach Alarm }

7. Anhang

1. Danksagung

Idee von MCS-51 mit dem IPSLibrary-Modul IPS-Health welche nie offiziell Verbreitet wurde.
Umsetzung von Nall-chan als natives IPS-Modul für IPS ab Version 3.1.

2. GUID der Module

Instanz GUID
Variablenüberwachung (Single) {BACCE313-C8F2-4189-B128-74A6888DAD21}
Variablenüberwachung (Group) {28198BA1-3563-4C85-81AE-8176B53589B8}

3. Parameter der Instanzen

Eigenschaften von Variablenüberwachung (Single):

Eigenschaft Typ Standardwert Funktion
Active boolean false Aktivieren / Deaktivieren der Überwachung
VarID integer 0 Variable welche überwacht werden soll
CheckMode integer 0 Überwachung auf Aktualisierung (0) oder Änderung (1)
Timer integer 0 Zeit in Sek bis zum Auslösen eines Alarm
HasState boolean true Variable ‚STATE‘ anlegen
StartUp integer 0 Neustart-Verzögerung 0 = keine, 1 = Intervallzeit, 2 = bis Aktualisierung
MultipleAlert boolean false Mehrfachauslösung
Actions string JSON-String mit Daten der zu startenden Aktionen

Eigenschaften von Variablenüberwachung (Group):

Eigenschaft Typ Standardwert Funktion
Active boolean false Aktivieren / Deaktivieren der Überwachung
Variables string JSON-String mit Daten der zu überwachenden Variablen
CheckMode integer 0 Überwachung auf Aktualisierung (0) oder Änderung (1)
Timer integer 0 Zeit in Sek bis zum Auslösen eines Alarm
HasState boolean true Variable ‚STATE‘ anlegen
ScriptID integer 0 Ziel-Script
StartUp integer 0 Neustart-Verzögerung 0 = keine, 1 = Intervallzeit, 2 = bis Aktualisierung
MultipleAlert boolean false Mehrfachauslösung
Actions string JSON-String mit Daten der zu startenden Aktionen

4. Changelog

siehe nächster Beitrag

5. Spenden

Die Library ist für die nicht kommerzielle Nutzung kostenlos, Schenkungen als Unterstützung für den Autor werden hier akzeptiert:

PayPal:

Wunschliste:
Wunschliste

8. Lizenz

CC BY-NC-SA 4.0

Version 2.71:

  • Timer wurden nicht zuverlässig angehalten, wenn Instanzen inaktiv geschaltet wurden.
  • Timer wurde gestartet, obwohl Instanz inaktiv war.

Version 2.70:

  • IPS 6.1 als Voraussetzung.
  • Bei auslösen der Überwachungen können mehrere Aktionen gestartet werden.
  • Vorhandenes Alarm-Script wird automatisch in eine Aktion übertragen.
  • Gruppenüberwachung von Variablen benutzt jetzt eine Liste und keine Links.
  • Bei Gruppenüberwachung werden die Links automatisch in die Variablen-Liste überführt.

Version 2.61:

  • Fehlermeldung beim IPS Shutdown.

Version 2.6:

  • Schreibfehler korrigiert.
  • Fehlende Übersetzungen ergänzt.

Version 2.5:

  • Release für IPS 5.1 und den Module-Store

Version 2.2:

  • Fixes für IPS 5.0

Version 2.1:

  • Fix: Timer in Create verschoben

Version 2.0:

  • Erste Version für IPS 4.1

Version 1.1:

  • Erstes öffentliches Release im Forum

Version 1.0.0.7:

  • Erstes internes Release mit Gruppenüberwachung

Hallo
Vielen Dank fuer das Modul aber ich habe im Moment folgendes Problem.
Testweise eine Gruppenueberwachung erstellt mit nur einem Eintrag.
Ein Temperaturfuehler ID 30239. Hat einwandfrei funktioniert.
Danach Link entfernt und neue Links hinzugefuegt fuer meine PIRI-Ueberwachung.
Es wird aber immer noch der alte Link ueberwacht und keine von den neuen.
Debugausgabe:

TXT: 19.11.2016 11:08:58.00 |     Message:SenderID | 30239
TXT: 19.11.2016 11:08:58.00 |      Message:Message | 10603
TXT: 19.11.2016 11:08:58.00 |       Message:Data:0 | 23,600000000000001
TXT: 19.11.2016 11:08:58.00 |       Message:Data:1 | False
TXT: 19.11.2016 11:08:58.00 |       Message:Data:2 | 23,600000000000001
TXT: 19.11.2016 11:08:58.00 |       Message:Data:3 | 1479550138
TXT: 19.11.2016 11:08:58.00 | GetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:1;}}}
TXT: 19.11.2016 11:08:58.00 | SetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:0;}}}
TXT: 19.11.2016 11:08:58.00 |     GetBuffer Alerts | i:1;
TXT: 19.11.2016 11:08:58.00 |     SetBuffer Alerts | i:0;
TXT: 19.11.2016 11:08:58.00 |     GetBuffer Alerts | i:0;
TXT: 19.11.2016 11:08:58.00 | GetBuffer ActiveVarID | i:0;
TXT: 19.11.2016 11:08:58.00 | SetBuffer ActiveVarID | i:0;
TXT: 19.11.2016 11:08:58.00 | GetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:0;}}}
TXT: 19.11.2016 11:08:58.00 | SetBuffer ActiveVarID | i:30239;
TXT: 19.11.2016 11:08:58.00 | SetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:0;}}}
TXT: 19.11.2016 11:08:58.00 | GetBuffer ActiveVarID | i:30239;
TXT: 19.11.2016 11:09:58.00 |     GetBuffer Alerts | i:0;
TXT: 19.11.2016 11:09:58.00 | GetBuffer ActiveVarID | i:30239;
TXT: 19.11.2016 11:09:58.00 | GetBuffer ActiveVarID | i:30239;
TXT: 19.11.2016 11:09:58.00 |     GetBuffer Alerts | i:0;
TXT: 19.11.2016 11:09:58.00 |     SetBuffer Alerts | i:1;
TXT: 19.11.2016 11:09:58.00 | GetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:0;}}}
TXT: 19.11.2016 11:09:58.00 | GetBuffer ActiveVarID | i:30239;
TXT: 19.11.2016 11:09:58.00 | SetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:1;}}}
TXT: 19.11.2016 11:09:58.00 | SetBuffer ActiveVarID | i:0;
TXT: 19.11.2016 11:09:58.00 | GetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:1;}}}
TXT: 19.11.2016 11:09:58.00 | SetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:1:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:30239;s:6:"LinkId";i:24548;s:5:"Alert";b:1;}}}
TXT: 19.11.2016 11:09:58.00 | GetBuffer ActiveVarID | i:0;

Link von Variable 30239 ist nicht mehr unter dem Modul und die LinkID 24548 existiert gar nicht mehr.

Danke für die Rückmeldung, schaue ich mir daheim mal in Ruhe an.
Kannst du bitte mal prüfen ob es nach einem Neustart die richtigen Links nutzt?
Michael

Neustart hat funktioniert. Danach sieht das Log so aus

TXT: 19.11.2016 11:51:29.00 | GetBuffer NoTriggerVarList | O:17:"TNoTriggerVarList":1:{s:5:"Items";a:11:{i:0;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:10794;s:6:"LinkId";i:11518;s:5:"Alert";b:1;}i:1;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:46713;s:6:"LinkId";i:11353;s:5:"Alert";b:1;}i:2;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:32941;s:6:"LinkId";i:19394;s:5:"Alert";b:1;}i:3;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:37200;s:6:"LinkId";i:11615;s:5:"Alert";b:1;}i:4;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:15436;s:6:"LinkId";i:16105;s:5:"Alert";b:1;}i:5;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:48316;s:6:"LinkId";i:34950;s:5:"Alert";b:1;}i:6;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:26121;s:6:"LinkId";i:26446;s:5:"Alert";b:1;}i:7;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:34371;s:6:"LinkId";i:20461;s:5:"Alert";b:1;}i:8;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:43059;s:6:"LinkId";i:11287;s:5:"Alert";b:1;}i:9;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:40004;s:6:"LinkId";i:59944;s:5:"Alert";b:1;}i:10;O:13:"TNoTriggerVar":3:{s:5:"VarId";i:40979;s:6:"LinkId";i:25948;s:5:"Alert";b:1;}}}

OK, danke dann weiss ich wo ich suchen muss.
Michael

Bugfix ist online… Das war ja mal ein :banghead: Fehler. War wohl einfach zu spät :smiley:

Michael

Hi,

gibt es für dieses Modul evtl. ein Beispiel für ein Ziel-Script, dass dann die fehlerhafte Variable ausgeben kann?
Ich möchte ca. 25 Variablen überwachen und im Webfront einen Fehler ausgeben. Hier wäre es aber gut, wenn gleich dabei stehen würde, welche Variable nicht mehr aktualisiert wird.

Gruß

Ist in der Doku enthalten.
IPSNoTrigger/README.md at master · Nall-chan/IPSNoTrigger · GitHub
Musst dann $_IPS[‚VARIABLE‘] auswerten.
Michael

Hallo Michael,

danke für die tolle Idee bzw. für die Bereitstellung des Moduls!
Genau DAS habe ich gesucht.

Ich habe ebenfalls ca. 20 verschiedene Variablen zum Überwachen, jedoch weiß ich leider nicht, wie hier das Skript aussehen soll. Ich würde gerne im Webfront sowie per PushNotification eine Meldung ausgeben.
Die Doku hab ich mir mehrfach durchgelesen, aber was für dich selbstverständlich klingt, ist für mich (noch) fremdsprache. Könntest du bitte ein Beispiel eines Skripts posten, dann finde ich mich sicher leichter zurecht.

Danke für deine - eure - Unterstützung.

Peter

Moin,

hier zwei Beispiele für die Verwendung von $_IPS[‚VARIABLE‘], was du dort machst, musst du schon selbser umsetzen.

Beispiel 1:

        switch ($_IPS['VARIABLE'])
        {
            case 12345: /* VARIABLE 12345 */
                if ($_IPS['VALUE'])    // Alarm wurde ausgelöst
                {
                    
                }
                else              // Ruhemeldung nach	Alarm
                {
                    
                }
                break;
            case 23456: /* VARIABLE 23456 */
                if ($_IPS['VALUE'])    // Alarm wurde ausgelöst
                {
                    
                }
                else              // Ruhemeldung nach	Alarm
                {
                    
                }
                break;
        }

Beispiel 2:


        if ($_IPS['VALUE'])    // Alarm wurde ausgelöst
        {
            echo 'Alarm von ' . IPS_GetName($_IPS['VARIABLE']);
        }
        else              // Ruhemeldung nach	Alarm
        {
            echo 'Alles OK von ' . IPS_GetName($_IPS['VARIABLE']);
        }

Links:
WFC_PushNotification — IP-Symcon :: Automatisierungssoftware
WFC_SendNotification — IP-Symcon :: Automatisierungssoftware

Michael

Super, danke! Das war der kleine Denkanstoß den ich gebraucht hab.

Wenn ich das Skript starte

<?

switch ($_IPS['VARIABLE'])
        {
            case 40496: /*[Variablenüberwachung (Group)\Temperatur]*/
                if ($_IPS['VALUE'])    // Alarm wurde ausgelöst
                {
                SNS_PlayFiles(39527 /*[Sonos\Sonos Wohnzimmer]*/,array ("//RASPBERRYPI/Pi-Share/Confirm.mp3"), 60);    
                }
                else              // Ruhemeldung nach Alarm
                {
                    
                }
                break;

            case 54703: /*[Variablenüberwachung (Group)\Temperatur]*/
                if ($_IPS['VALUE'])    // Alarm wurde ausgelöst
                {
                SNS_PlayFiles(39527 /*[Sonos\Sonos Wohnzimmer]*/,array ("//RASPBERRYPI/Pi-Share/Confirm.mp3"), 60);    
                }
                else              // Ruhemeldung nach Alarm
                {
                    
                }
                break;
        }  
		
?>

kommt der Fehler:
Notice: Undefined index: VARIABLE in /var/lib/symcon/scripts/27664.ips.php on line 3
:confused:

Logisch, das Script muss von der Instanz gestartet werden, manuell ausführen geht nicht.
Michael

Fehler gefunden!
Ich hab fälschlicherweise die ObjectID der Verlinkung als case verwendet.

Hallo,

hab mich seit längerem mal wieder intensiv mit meiner IP-Symcon beschäftigt. Hauptsächlich wegen neuer Rauchmelder die ich einbinden will.
Ich habe jetzt mal die Instanz „Variablenüberwachung(Group)“ hinzugefügt und eine Variable als Link darunter gelegt.
Aber jedesmal wenn ich die Instanz aktivieren will bekomme ich als Fehlermeldung „Keine Links angelegt!“.

was mache ich falsch?

War ein Fehler im Modul.

Update ist online, dann sollte es funktionieren :slight_smile:

Michael

Hallo Michael,

ich habe heute erst auf die aktuelle Version 4.4 upgedatet und auch den Rechner neu gestartet. sollte also alles frisch sein.
Im Debug erscheinen folgende Meldungen beim hinzufügen eines Links:

debug.PNG

ich hab mal ein kleines Script (in Abwandlung deiner private function GetAllTargets()) erstellt:

$Links = IPS_GetChildrenIDs(28593);
        foreach ($Links as $Link)
        {
            $Objekt = IPS_GetObject($Link);
            echo "Type: ", $Objekt['ObjectType'], "  ";
            echo "Name: ", $Objekt['ObjectName'], "\r";
            
            $Target = @IPS_GetObject(IPS_GetLink($Link)['TargetID']);
            if ($Target === false)
                continue;
            echo "TargetType: ", $Target['ObjectName'], "\r";

         //   if ($Target['ObjectType'] != otVariable)
         //       continue;
        }

Ergebnis ist folgendes:

Type: 2 Name: STATE
TargetType: IP-Symcon
Type: 6 Name: Status Rauchmelder
TargetType: STATE
Type: 3 Name: TestLink
TargetType: IP-Symcon
Type: 6 Name: ERROR_ALARM_TEST
TargetType: ERROR_ALARM_TEST
Type: 6 Name: Temperatur
TargetType: Temperatur
Type: 6 Name: Temperatur
TargetType: Temperatur

Bei den Targettypes scheint evtl. das Problem zu liegen, da erwartest du wohl was anderes (otVariable).
Ich hoffe du kannst mir weiterhelfen.

Gruß
Hubert

Die Korrektur von Michael ist aber erst 10 Minuten alt[emoji3]

Gesendet von iPad mit Tapatalk

Super, danke für die schnelle Hilfe, jetzt funktioniert’s! :slight_smile:

Schönes WE noch.

Gruß
Hubert