+ Antworten
Ergebnis 1 bis 9 von 9
  1. #1
    Registriert seit
    Feb 2009
    Ort
    Leistadt
    Beiträge
    530

    Standard Notification nach bestimmter Zeit

    Hi Leute und Hohoho!

    Irgendwo steckt mein Denkapparat in der Sackgasse.

    Ich habe gestern vergessen meine Garage zu schließen. Stand also über Nacht offen. Ich habe bereits eine Script, welches eine Push schickt, wenn die Garage geöffnet wird. Nun hätte ich auch gern ein solches, wenn die Garage nach Zeit X immer noch offen ist (bis sie wieder geschlossen wird natürlich.

    Wie gehe ich am besten vor? Welche Variablen Mappe ich am besten rein?

    Danke euch und ein frohes Fest,

    Flo

  2. #2
    Registriert seit
    Apr 2005
    Ort
    Köln
    Beiträge
    413

    Hi,

    hier mal mein Ansatz (Fragment):

    Code:
    	$ARR = IPS_GetVariable($VarID);
    	$s   = intval((time() - $ARR['VariableUpdated']));
    Nimm z.B. die Variable, die den Status "geschlossen/geöffnet" enthält und prüfe zyklisch, ob die Anzahl Sekunden
    bereits überschritten wurde seit der letzten Änderung
    .
    Geht bestimmt schicker / anders, ist ja auch nur als "Schnellstarthilfe" gedacht


    LG Tom
    Wenn das die Lösung ist, dann hätte ich gern mein Problem zurück

    [IPS V4.4 always latest stable - auf Win 10 Pro]

  3. #3
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    1,028

    Hallo,

    ich mache verzögerte Meldungen oder Aktionen immer nach diesem Schema:

    PHP-Code:
    <?php
    $scriptName 
    IPS_GetName($_IPS['SELF']) . '(' $_IPS['SELF'] . ')';

    $alert GetValueBoolean(35841); // hier wird eine oder mehrere Variable(n) angefragt, in diesem Fall true = Alarm
    $msg_ts GetValueInteger(53995); // Timestamp der Meldung

    $sec4firstMsg 15 60// 15 Minuten
    $sec4nextMsg 24 60 60// 1 Tag

    $msg '';
    $sec2sleep 0;

    if (
    $_IPS['SENDER'] == 'TimerEvent') {
        if (
    $alert == false) {
            
    // MELDUNG: Gerät ist wieder erreichbar
            
    $msg 'normal operation resumed';
            
    SetValueInteger(539950);
        } else {
            
    // MELDUNG: Gerät ist nicht erreichbar
            // 24h abwarten für weitere Meldungen
            
    $msg 'sent notification';
            
    $sec2sleep $sec4nextMsg;
        }
    } else {
        if (
    $alert == false) {
            if (
    $msg_ts && time() - $msg_ts $sec4firstMsg) {
                
    // nur ok-meldung, wenn der Timer schon angelaufen war und einer erste Meldung erzeugt hatte
                // MELDUNG: Gerät ist wieder erreichbar
            
    }
            
    $msg 'normal operation';
            
    SetValueInteger(539950);
        } else {
            
    // 15 Minuten bis zur ersten Meldung
            
    $msg 'delay notification';
            
    $sec2sleep $sec4firstMsg;
            
    SetValueInteger(53995time());
        }
    }

    IPS_SetScriptTimer($_IPS['SELF'], $sec2sleep);
    IPS_LogMessage($scriptName'alert=' . ($alert 'true' 'false') . ' => ' $msg);
    Das Script bietet
    1. nach Eintritt des Ereignisses wird eine bestimmte Zeit gewartet, bevor es die erste Aktion gibt
    2. nach der ersten Aktion wird ein längerer Zeitraum gewartet, bis eine erneute oder andere Aktion erfolgt.

    Man braucht also für jeder dieser Aktionen / Meldungen
    a) des angepasste Script
    b) eine Integer-Variable zum Merken des Timestamps der Auslösung

    Das Script wird typischerweise durch Änderung einer oder mehrerer Variablen getriggert.

    Gruß
    demel

  4. #4
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,638

    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

  5. #5
    Registriert seit
    Jan 2018
    Ort
    97469 Gochsheim
    Beiträge
    567

    Standard Garagentor

    Hi,

    ich prüfe, ob mein Garagentor noch offen ist mit einem Fensterkontakt. Wenn der TRUE meldet, wird eine Symcon Alarmanlage mit einer Zeitverzögerung von 3600 Sekunden scharf geschalten. Wird das Garagentor geschlossen wird die Alarmanlage ausgeschalten, ansonsten bekomme ich nach 60 Minuten eine Push Meldung, dass das Tor noch offen ist. Für verschiedene Fensterkontakte habe ich ähnliches eingerichtet.

    Oliver

  6. #6
    Registriert seit
    Jan 2018
    Ort
    97469 Gochsheim
    Beiträge
    567

    Hallo Demel,

    cooles Skript, damit geht es viel einfacher wie mit meiner "Alarmanlagenlösung"

    in deinem Script hast du


    $msg = 'sent notification'; bzw.
    $msg = 'delay notification';

    was bewirken diese Befehle?
    Sendest du unterschiedliche Nachrichten nach Zeit eins und zwei?
    wenn ja, wie machst du das?

    Oliver

  7. #7
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    1,028

    Zitat Zitat von jagu Beitrag anzeigen
    Hallo Demel,

    cooles Skript, damit geht es viel einfacher wie mit meiner "Alarmanlagenlösung"

    in deinem Script hast du


    $msg = 'sent notification'; bzw.
    $msg = 'delay notification';

    was bewirken diese Befehle?
    Sendest du unterschiedliche Nachrichten nach Zeit eins und zwei?
    wenn ja, wie machst du das?

    Oliver
    $msg wird weiter unten per IPS_LogMessage() ausgegeben, sonst bewirkt das weiter nichts.

    delay notification sagt nur aus, das es zwar einen Auslöser gab, aber die initial Wartezeit nicht überschritten wurde, sent notification, das ich eine Meldung verschickt haben.

    Wenn man eine andere Meldung verschicken will, nach delay bzw dann in der Wiederholung, würde ich den Code so anpassen:

    PHP-Code:
        } else { 
            
    // MELDUNG: Gerät ist nicht erreichbar 
            // 24h abwarten für weitere Meldungen 
            
    $msg 'sent notification'
            
    $sec2sleep $sec4nextMsg
        } 
    ersetzen durch

    PHP-Code:
        } else {
            if (
    time() - $msg_ts $sec4nextMsg) {
                
    $msg 'sent notification';
                
    // 1. MELDUNG: Gerät ist nicht erreichbar
            
    } else {
                
    $msg 'sent reminder';
                
    // ERINNERUNG: Gerät ist nicht erreichbar
            
    }
            
    // 24h abwarten für weitere Meldungen
            
    $sec2sleep $sec4nextMsg;
        } 
    Ist aber ungetestet ...

    demel

  8. #8
    Registriert seit
    Jan 2018
    Ort
    97469 Gochsheim
    Beiträge
    567

    hat geklappt, danke

    Oliver

  9. #9
    Registriert seit
    Jul 2015
    Ort
    96178 Pommersfelden
    Beiträge
    78

    Standard Gleiches Thema anderer Anwendungsfall

    Hallo zusammen,

    ich habe mich mal an Nall-chan's Modul versucht. Wie zu erwarten, macht es das, was es soll. Leider passt es nicht so ganz auf meinen Anwendungsfall. Vielleicht hast du hierzu eine Idee, wie ich dein Modul hierzu anwenden kann.

    Dazu habe ich einen Screenshot gemacht, der die Funktion besser veranschaulichen soll:

    Name:  trace Pellet.jpg
Hits: 161
Größe:  85.2 KB

    Der Pufferspeicher meiner Heizung fordert unter bestimmten Bedingungen den Pelletofen an A04.
    Ist alles gut und erreicht der Temperaturfühler im Ofen eine bestimmte Temperatur schaltet die Zirkulationspumpe A05.

    Was ich also bräuchte, ist eine Meldung wenn die Zirkulationspumpe A05 nach 30 Minuten noch nicht angefordert wurde.

    Hast du hierzu eine Idee?

    Danke und Gruß, Alfred
    Geändert von ab864 (28.12.18 um 01:33 Uhr)

Ähnliche Themen

  1. Aktor nach Zeit abschalten
    Von Detlev im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 02.05.18, 20:35
  2. Antworten: 6
    Letzter Beitrag: 13.11.13, 11:46
  3. EHZ nach bestimmter Zeit auslesen
    Von wibo050447 im Forum Skripte, PHP, SQL
    Antworten: 12
    Letzter Beitrag: 10.07.12, 20:03
  4. Skript nach Zeit
    Von nsrracer im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 01.06.12, 16:19
  5. FHZ 1000 sendet nach bestimmter Zeit nicht mehr!
    Von marty2008 im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 1
    Letzter Beitrag: 04.01.10, 09:35