+ Antworten
Ergebnis 1 bis 6 von 6
  1. #1
    Registriert seit
    Nov 2017
    Beiträge
    56

    Standard Identifikation eines genauen Zeitpunktes per Skript

    Liebes Forum,

    bin "mal wieder" auf ein Problem gestoßen und möchte euch gerne um Hilfe bitten:

    Ich würde gerne innerhalb eines Skriptes einen genauen Zeitpunkt identifizieren, was ja z.B. über eine einfache Abfrage möglich wäre:

    PHP-Code:
    if (strtotime ("Now") == strtotime ("<gewünschter Zeitpunkt>")
        {
        
    // Zeitpunkt identifiziert
        

    Konkret wäre das z.B. der 1. Tag in einem Monat oder einer Woche etc.

    Das würde in meinen Augen aber mind. einen sekündlichen Aufruf des Skriptes erfordern, und selbst dann ist nicht sichergestellt, ob durch z.B. höherpriore Systemtasks die Ausführung um wenige Millisekunden verzögert wird und ich "die" genaue Sekunde, in der die Abfrage "wahr" ist, verpasse.

    Eine Lösung über einen Zeitbereich wäre prinzipiell ja möglich:

    PHP-Code:
    if (strtotime (("Now") > strtotime ("<gewünschter Zeitpunkt> - Offset") ||  (strtotime ("Now") > strtotime ("<gewünschter Zeitpunkt> + Offset"))
        {
        
    // Zeitpunkt identifiziert
        

    Zum einen finde ich diese Lösung "unschön", zum anderen birgt sie je nach Konfiguration die Gefahr, den Code für einen bestimmten Zeitpunkt mehr als ein Mal aufzurufen, da je nach Frequenz des Aufrufs auch ein entsprechend großer Zeitbereich "definiert" werden muss und damit ggfs. zwei Skriptaufrufe zwischen
    PHP-Code:
    strtotime ("<gewünschter Zeitpunkt> - Offset") < (strtotime ("Now") < strtotime ("<gewünschter Zeitpunkt> + Offset"
    möglich sind. Eine "Anforderung", die ich mir selbst gestellt habe ist gerade bei langsamen Vorgängen wie z.B. der Heizungsregelung, das Skript nur alle paar Minuten aufzurufen.

    Für die "1 mit Stern": Noch schwieriger wird es nach meiner Ansicht, wenn ein Skript Eventbezogen aufgerufen wird, d.h. ich keine Aussage über die Frequenz des Aufrufs treffen kann.

    Hat jemand von euch eine bessere Lösung parat?

    Danke für eure Hilfe, VG Olaf

  2. #2
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,337

    Auf gut Deutsch, Du weißt selber nicht was Du willst?

    Für was gibt es Event gesteuerte Aktionen?


    Gesendet von iPad mit Tapatalk
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  3. #3
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    2,895

    Ich verstehe dich so, dass du ein Skript zu einem genauen Zeitpunkt aufrufen möchtest, z.B. für einen Wecker oder ähnliches...

    Dafür ist eigentlich das 'zyklische Ereignis' gedacht, dem du eine sekundengenaue Uhrzeit mitgeben kannst.
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Hikvision DS-2CD2686G2-IZS | Echo Dot + Show | Stall.biz AirSniffer | Vaillant eBUS | Intel NUC i3 | IPS V5.5 Beta

  4. #4
    Registriert seit
    Nov 2017
    Beiträge
    56

    @bumaas: ja genau. Danke für die Antwort.

    Im Detail geht es z.B. um eine Abrechnungsfunktion (Verbrauch, Laufzeit etc.), die dann z.B. den letzten Monat abrechnet. Mit dem zyklischen Ereignis kann ich zwar das Skript zeitgenau starten, habe aber dann innerhalb des Skriptes z.B. 12 Abfragen, ob es sich um Januar, Februar etc. handelt. Analog gilt das natürlich für andere Zeiträume (Tage bis hin zu Sekunden etc.) innerhalb des gleichen Skriptes.

    Kurzum: Ein zyklisches Ereignis startet zwar das Skript nach definierten Bedingungen, ich habe dann aber nach wie vor das Problem, z.B. den passenden Zeitraum innerhalb des Skriptes sicher zu identifizieren und lande damit in meinen Augen wieder beim ursprünglichen Problem. Mein "Workaround" aktuell ist, dass ich pro Abfrage ein Skript erstellt habe, dass dann zum definierten Zeitpunkt aufgerufen wird. D.h. die Januarabrechnung ist ein eigenes Skript und wird am 1.2. des aktuellen Jahres um 00:00:00 aufgerufen und berechnet den Januar, gleiches gilt dann analog für die anderen Zeiträume. Ist aber wie schon geschrieben in meinen Augen einfach "unschön".

    Vielleicht macht es ein Beispiel deutlicher:

    Skriptaufruf mit Timer z.B. alle 10 Sek.
    1. Abfrage: Ist jetzt der 1.1. 00:10 des aktuellen Jahres
    2. Abfrage: ist jetzt die 5. Minute der aktuellen Stunde
    3. usw...

    Ich hoffe, damit noch einmal verdeutlicht zu haben, was ich genau möchte.

    Habe ich einen Knoten im Hirn?

    Danke noch mal für die Hilfe.

    VG Olaf

  5. #5
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,337

    Hallo Olaf,

    Komplett falsche Denkweise.

    Du hast eine Datenbank in IPS wo deine Variablen zur Auswertung zur Verfügung stehen.
    Diese kann man gezielt und genau abrufen mit den Begriffen aus der Doku.
    Dafür braucht es kein Script was alle Nase lang läuft.

    Nur als kleiner Hinweis. Zu Abrechnungszwecken egal welcher Art,
    sind diese nicht geeignet. Intern ja, alles andere ist nicht recht sicher!
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  6. #6
    Registriert seit
    Nov 2017
    Beiträge
    56

    Standard Lösung

    Hallo Rainer,

    danke für deine Antwort.

    Mit Datenbank meinst du vermutlich die csv Files, die per GetAggregatedValues ausgelesen werden. Ja, die Funktion nutze ich natürlich, mein Problem bezieht sich ja eher auf den Trigger der Analyse.

    Anyway, scheinbar komme ich mit meinem ursprünglichen Ansatz nicht zum Ziel und werde das jetzt mit idate() und strtotime() lösen.

    Trotzdem vielen herzlichen Dank für eure Hilfe!

    VG Olaf

Ähnliche Themen

  1. Kürzung eines String innerhal eines Array
    Von loerdy im Forum Skripte, PHP, SQL
    Antworten: 9
    Letzter Beitrag: 27.05.17, 19:43
  2. Wie Skript in x Minuten ausführen bei Eintritt eines Ereignisses?
    Von mastermind1 im Forum Skripte, PHP, SQL
    Antworten: 6
    Letzter Beitrag: 12.01.14, 17:24
  3. Skript aus einem anderen Skript heraus aufrufen
    Von wolkensurfer im Forum Skripte, PHP, SQL
    Antworten: 4
    Letzter Beitrag: 07.11.13, 13:45
  4. Antworten: 3
    Letzter Beitrag: 29.11.12, 18:39
  5. Skript aus Skript heraus starten und dessen Ende Abwarten
    Von ChristianL im Forum Skripte, PHP, SQL
    Antworten: 9
    Letzter Beitrag: 14.06.12, 11:09

Stichworte