+ Antworten
Ergebnis 1 bis 10 von 10
  1. #1
    Registriert seit
    Feb 2009
    Beiträge
    353

    Standard Timer Ereignis deaktivieren

    Hallo, habe eine Frage zum Timer Ereignis:
    Früher (ist mir erst jetzt in der aktuellen V 5.3 aufgefallen, hatte lange nicht mehr programmiert) konnte ich im Objektbaum die vom Script erzeugten Timer per Maus aktivieren/deaktivieren...heute kommt die Fehlermeldung 'kein gültiges Von oder Zu Datum gewählt'.
    Im Timer ist tatsächlich beim Tagesmuster nur ein Dummy Datum 'tt.mm.jjjj' eingetragen ... das hatte meines Wissens nach nie gestört.
    Heute muss ich ein gültiges Datum eintragen ....habt ihr da etwas geändert? Muss ich meine Timerroutine in den Scripts anpassen?

    Gruß Michael
    IPS auf Win10 Pro, PC nach c't 19/2013 (Core i5-4570, unter 20Watt), RASPI 2 mit YAHM CCU, RASPI 1, RASPI 3 mit PiLight & PiHole, FritzBox 7490

  2. #2
    Registriert seit
    Nov 2009
    Ort
    Essen
    Beiträge
    2,202

    Daran hat sich seit mindestens 4.0 nichts geändert, wenn mich nicht alles täuscht.
    Deutschlandweite Dienstleistungen rund um und mit IP-Symcon. Systemintegrator im Bereich KNX. ekey Partner. Infos unter https://schrader-it.net

  3. #3
    Registriert seit
    Feb 2017
    Beiträge
    1,648

    Doch, die webbasierte Konsole prüft, ob im Ereignis sinnvolle Werte eingetragen sind, und trägt diese auch bei Erstellung automatisch ein. Die SkriptTimer sind da aber passend definiert und direkt deaktivierbar. Wie erstellst du die Ereignisse? Wenn diese unvollständig definiert sind, dann kommt es halt zu der entsprechenden Fehlermeldung.
    Geändert von Dr. Niels (07.02.20 um 09:26 Uhr)

  4. #4
    Registriert seit
    Feb 2009
    Beiträge
    353

    Stelle heut Abend meine Script Funktion hier ein...es wundert mich, dass ein deaktivieren/aktivieren per Script funktioniert.
    Ich versuche das noch einmal nachzustellen.
    Gruß Michael
    IPS auf Win10 Pro, PC nach c't 19/2013 (Core i5-4570, unter 20Watt), RASPI 2 mit YAHM CCU, RASPI 1, RASPI 3 mit PiLight & PiHole, FritzBox 7490

  5. #5
    Registriert seit
    Nov 2009
    Ort
    Essen
    Beiträge
    2,202

    Ich meinte, dass sich am skriptbasiertern Erstellen von Ereignissen nichts geändert hat. Das die Webkonsole etwas strenger prüft mag die Erklärung sein. Ich vermute, dass die Ereignisse nicht korrekt definiert werden. Die Legacy Konsole hat es nicht gestört, die aktuelle Konsole meckert.
    Deutschlandweite Dienstleistungen rund um und mit IP-Symcon. Systemintegrator im Bereich KNX. ekey Partner. Infos unter https://schrader-it.net

  6. #6
    Registriert seit
    Feb 2009
    Beiträge
    353

    Hallo,

    hier mein Code zur Timer Behandlung:

    Aufruf der Funktion:

    PHP-Code:
                 TimerDelay($_IPS['INSTANCE'],$_IPS['INSTANCE2'], $_IPS['DURATION'], $SC_Name); 
    die Funktion:

    PHP-Code:
    function TimerDelay($id$id2$time$name){
        
    $sekunden=intval(substr($time0,-3));
        
    $msekunden=substr($time, -33);
        
    $timerid IPS_GetObjectIDByName($id." ".$id2." ".$name$_IPS['SELF']);
        
    #echo "Timer: ".$timerid."\n";
        
    if ($timerid ==0){
               
    $newtimer IPS_CreateEvent(1);
            
    IPS_SetParent($newtimer$_IPS['SELF']);
               
    IPS_SetName($newtimer$id." ".$id2." ".$name);
               
    IPS_Sleep(intval($msekunden));
               
    IPS_SetEventCyclic($newtimer00001$sekunden);
            
    IPS_SetEventCyclicDateFrom($newtimer000);
            
    IPS_SetEventCyclicDateTo($newtimer000);
            
    IPS_SetEventCyclicTimeFrom($newtimer, (int)date("H"), (int)date("i"), (int)date("s"));
            
    IPS_SetEventCyclicTimeTo($newtimer000);
               
    IPS_SetEventActive($newtimertrue);    //Ereignis aktivieren
        
    }
       else
       {
            
    IPS_Sleep(intval($msekunden));
               
    IPS_SetEventCyclic($timerid00001$sekunden);
            
    IPS_SetEventCyclicDateFrom($timerid000);
            
    IPS_SetEventCyclicDateTo($timerid000);
            
    IPS_SetEventCyclicTimeFrom($timerid, (int)date("H"), (int)date("i"), (int)date("s"));
            
    IPS_SetEventCyclicTimeTo($timerid000);
               
    IPS_SetEventActive($timeridtrue);    //Ereignis aktivieren
       
    }

    und reagieren (deaktivieren) auf das Timer Event:

    PHP-Code:
        case "TimerEvent":
        
    IPS_SetEventActive($_IPS['EVENT'], false);    //Ereignis deaktivieren
        
    $timer IPS_GetName($_IPS['EVENT']);
        
    $_IPS['INSTANCE'] = intval(substr($timer,0,5));
        
    $_IPS['INSTANCE2'] = intval(substr($timer,6,5));
        
    HM_WriteValueBoolean($_IPS['INSTANCE2'], "STATE" False);
        
    HM_WriteValueBoolean($_IPS['INSTANCE'], "STATE" False);
        break; 
    Das aktivieren/deaktivieren klappt per Script ... habe nur jetzt beim Debuggen bemerkt, dass die Fehlermeldung beim manuellen Versuch kommt.

    Vorschläge wie man es besser/anders macht sind gerne Willkommen

    Gruß Michael
    IPS auf Win10 Pro, PC nach c't 19/2013 (Core i5-4570, unter 20Watt), RASPI 2 mit YAHM CCU, RASPI 1, RASPI 3 mit PiLight & PiHole, FritzBox 7490

  7. #7
    Registriert seit
    Feb 2017
    Beiträge
    1,648

    Wenn du bei der Erstellung des Ereignisses bei IPS_SetEventCyclicDateFrom($newtimer, 0, 0, 0); stattdessen ein gültiges Datum einträgst (z.B. das heutige Datum oder auch einfach der 1.1.2000) dann meckert die Konsole nicht mehr.

  8. #8
    Registriert seit
    Feb 2009
    Beiträge
    353

    OK
    Sonst im Prinzip richtig?
    Kann man die Funktion sinnvoll kürzer machen?
    IPS auf Win10 Pro, PC nach c't 19/2013 (Core i5-4570, unter 20Watt), RASPI 2 mit YAHM CCU, RASPI 1, RASPI 3 mit PiLight & PiHole, FritzBox 7490

  9. #9
    Registriert seit
    Feb 2017
    Beiträge
    1,648

    Ohne mich jetzt detailliert durchzuarbeiten: Könnte man das vielleicht sinnvoll durch IPS_SetScriptTimer ersetzen oder zumindest kürzen? Ich finde zum Beispiel deinen Trick die Millisekunden erst per IPS_Sleep abzufangen sehr geschickt. Den müsste man auch bei dem SkriptTimer drin lassen.

  10. #10
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    22,323

    Wir erweitern die Konsole, sodass diese bei diesem "Standardwert" stattdessen das aktuelle Datum einträgt.

    paresy

Ähnliche Themen

  1. script per Ereignis deaktivieren
    Von Izack im Forum Skripte, PHP, SQL
    Antworten: 6
    Letzter Beitrag: 11.02.16, 22:48
  2. FS20 Timer deaktivieren
    Von herbertf im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 5
    Letzter Beitrag: 02.11.11, 21:26
  3. Timer wizard oder Ereignis
    Von BIM im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 12.11.09, 08:22