+ Antworten
Ergebnis 1 bis 4 von 4
  1. #1
    Registriert seit
    Dec 2011
    Ort
    am Ende des Internets
    Beiträge
    303

    Question Event Control (EventHandler)

    Dieses Modul (in den Kern Instanzen) erlaubt dem User auf bestimmte Ereignisse in IP-Symcon zu reagieren und ein Skript zu starten.

    Das Konfigurationsfenster beinhaltet eine Box, in die man Instanz und Skript eintragen kann. "Wenn sich der Status einer Instanz aktualisiert, kann in einem angegebenen Skript auf diese Aktualisierung reagiert werden".

    Gibt es eine Methode diese Liste nicht händisch, sondern mit einem Installations-Skript zu editieren/zu erweitern oder Einträge zu löschen?

    (Ich habe die Suchhilfe bemüht, aber nichts gefunden. "Der IPSInstaller bietet diverse Funktionen um Objekte (Kategorien, Variablen, Links, usw.) in IPS anzulegen", bezüglich dieser Möglichkeit habe ich dort nichts gefunden)

    Viele Grüsse
    Harald

  2. #2
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    7,343

    Wie immer wenn man Instanzen konfiguriert:
    Mit IPS_SetProperty: IPS_SetProperty — IP-Symcon :: Automatisierungssoftware
    Zuvor den Wert StatusEvents mit IPS_GetProperty auslesen, mit Json_decode in ein Array wandeln.
    Das Array ergänzen und mit json_encode und IPS_SetProperty schreiben. IPS_GetProperty — IP-Symcon :: Automatisierungssoftware

    Anschließend IPS_ApplyChanges.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  3. #3
    Registriert seit
    Dec 2011
    Ort
    am Ende des Internets
    Beiträge
    303

    Vielen Dank für die Bauanleitung!

    Bevor ich das Rad neu erfinde suche ich halt erst mal eine bereits fertige Lösung.
    Es sollen ja viele Experten die IPS-Komponenten per Skript anlegen, vielleicht ist jemand bereit seine diesbezügliche Lösung mit der Community zu teilen ?

    Was ich so treibe, hab ich meist in IP-Symcon - Wie kann ich... 2.0 veröffentlicht.

    Viele Grüsse
    Harald

  4. #4
    Registriert seit
    Dec 2011
    Ort
    am Ende des Internets
    Beiträge
    303

    Hier meine erste function mit JSON- und Klassenprogrammierung ohne dass ich eine Ahnung davon habe
    Ist getestet unter IP-Symcon 4.4, Windows x64, 10.01.18, 0f19800dcb96; dennoch Benutzung auf eigene Gefahr.
    Verbesserungsvorschläge erwünscht.

    PHP-Code:
    <?

    /*
     * @file          ipsBeitrag_EventHandler.ips.php
     * @author        Harald Hertlein
     * @version       16.06.18 13:25
     *
     
     *
     */



    // Editiere Liste der Statusereignisse im Modul Event Control
    // $Mode = '?': Abfrage ob das Paar Device/Script existiert, = '-': Paar wird entfernt, = '+': Paar wird hinzugefügt
    // function liefert 'false' wenn was nicht zutrifft oder fehlschlägt, '0' wenn bei Abfrage Paar nicht vorhanden, sonst die ID des Devices
    function EditEventHandler ($Mode '?'$DeviceID$ScriptID) {
        if (@
    IPS_GetObject ($ScriptID)['ObjectType'] != 3)   // Skript?
            
    return false;
        if (@
    IPS_GetObject ($DeviceID)['ObjectType'] != 1)   // Instanz?
            
    return false;
        
    $ModuleId = @IPS_GetInstanceListByModuleID ("{ED573B53-8991-4866-B28C-CBE44C59A2DA}")[0];   //  [ModuleName] => Event Control
        
    if ($ModuleId === false)
            die (
    "Modul 'Event Control' nicht gefunden!!");
        
    $EventListe Json_decode (IPS_GetProperty ($ModuleId'StatusEvents'));
        
    $Found 0;
        foreach (
    $EventListe as $Nr => $Event) {
            if ((
    $Event -> DeviceID == $DeviceID) && ($Event -> ScriptID == $ScriptID)) {
                
    $Found $Event -> DeviceID;
                break;
            }
        }
        switch (
    $Mode):
            case 
    '?':
                return 
    $Found;
                break;
            case 
    '+':
                if (
    $Found)
                    return 
    false;
                @
    $EventNeu -> DeviceID $DeviceID;
                
    $EventNeu -> ScriptID $ScriptID;
                
    $EventListe[] = $EventNeu;
                break;
            case 
    '-':
                if (
    $Found) {
                    unset (
    $EventListe[$Nr]);
                    
    $EventListe array_values ($EventListe);
                } else {
                    return 
    false;
                }
                break;
            default:
        endswitch;

        
    IPS_SetProperty ($ModuleId'StatusEvents'Json_encode ($EventListe));
        
    IPS_ApplyChanges ($ModuleId);
        return 
    $DeviceID;
    }

    ?>
    Viele Grüsse
    Harald

Ähnliche Themen

  1. Event Control / Herunterfahr Skript
    Von sokkederheld im Forum Allgemeine Diskussion
    Antworten: 3
    Letzter Beitrag: 23.01.18, 17:05
  2. event control modul ereignisse
    Von bauli im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 12.01.16, 21:02
  3. Event Control*| Wiederverbinden [WebServer] fehlgeschlagen
    Von imaduffus im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 04.12.15, 14:07
  4. Funktionsweise Event Control beim Windowsshutdown
    Von Ferengi-Master im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 3
    Letzter Beitrag: 02.06.11, 21:58
  5. Event Control & Start / Ende-Scripte
    Von jwka im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 0
    Letzter Beitrag: 02.01.11, 01:18