Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Zeitsteuerung Javascript versus UI?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    864

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] Zeitsteuerung Javascript versus UI?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 237 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • BertDerKleineB Offline
    BertDerKleineB Offline
    BertDerKleine
    schrieb am zuletzt editiert von BertDerKleine
    #1

    Ich bräuchte mal Grundverständnis bzgl. einer Zeitsteuerung eines Javascripts.

    Hintergrund: Ich habe ein Javaskript, das ich (z.B. zum Testen aber auch sonst) gerne einfach manuell auslösen will ohne viel Brimborium. Ansonsten soll es aber i.d.R. automatisch zeitgesteueuert am Monatsersten ablaufen.

    Jetzt sehe ich im iob UI für Javascript a) rechts oben ein Uhr-Symbol, mit dem ich einen Wizard starte für einen CRON-Job.
    Der schreibt mir dann in die erste Zeile des Skriptes

    '{"time":{"exactTime":true,"start":"00:05"},"period":{"months":1,"dates":"[1]"}}'
    

    rein, sonst nix.

    Und ich habe links oben im UI den "play" Button, der das Skript laufen lässt.

    In meinem Fall läuft nach dem Play-Button das Skript einmal durch (während dieser Zeit ändert sich der "play" Button zu einem "Pause" Button) und endet dann (man sieht wieder den "Play"-Button).
    Ich kann nicht erkennen, ob die Zeitsteuerung irgendwie aktiv ist.

    Da ich ursprünglich schon - als die Zeitsteuerung noch nicht eingebaut sein sollte - feststellte, dass der manuelle Aufruf des Skripts, das Ding weiter sinnlos "laufen" lässt (erkennbar an dem "Pause"-Button), habe ich ein hartes Beenden des Skripts eingebaut, damit ich nicht selbst immer per Hand abbrechen muss.

    function beendeSkript() {
        log('✅ Beende Skript jetzt...', 'info');
        const maxHandles = 1000;
        for (let i = 1; i < maxHandles; i++) {
            clearTimeout(i);
            clearInterval(i);
        }
        if (typeof stopScript === 'function') stopScript();
        if (typeof process !== 'undefined' && process.exit) process.exit(0);
    }
    

    Ich mutmasse, das das jetzt verhindert, dass eine Zeitsteuerung aktiv ist.

    Fragen:

    1. Woran erkennt man, ob ein Skript aktuell auf eine Zeitsteuerung wartet?
    2. Ist die eine Zeile aus dem Wizard mit den einfachen Anführungszeichen ausreichend für eine Zeitsteuerung?
    3. Muss das Skript "laufen", also der UI-Button als "Pause"-Version sichtbar, damit eine Zeitsteuerung greift?
    4. Was wäre die beste Lösung, um die von mir oben beschriebene Kombination von optional manuellem Aufruf und Zeitsteuerung hinzubekommen?
    OliverIOO paul53P 2 Antworten Letzte Antwort
    0
    • BertDerKleineB BertDerKleine

      Ich bräuchte mal Grundverständnis bzgl. einer Zeitsteuerung eines Javascripts.

      Hintergrund: Ich habe ein Javaskript, das ich (z.B. zum Testen aber auch sonst) gerne einfach manuell auslösen will ohne viel Brimborium. Ansonsten soll es aber i.d.R. automatisch zeitgesteueuert am Monatsersten ablaufen.

      Jetzt sehe ich im iob UI für Javascript a) rechts oben ein Uhr-Symbol, mit dem ich einen Wizard starte für einen CRON-Job.
      Der schreibt mir dann in die erste Zeile des Skriptes

      '{"time":{"exactTime":true,"start":"00:05"},"period":{"months":1,"dates":"[1]"}}'
      

      rein, sonst nix.

      Und ich habe links oben im UI den "play" Button, der das Skript laufen lässt.

      In meinem Fall läuft nach dem Play-Button das Skript einmal durch (während dieser Zeit ändert sich der "play" Button zu einem "Pause" Button) und endet dann (man sieht wieder den "Play"-Button).
      Ich kann nicht erkennen, ob die Zeitsteuerung irgendwie aktiv ist.

      Da ich ursprünglich schon - als die Zeitsteuerung noch nicht eingebaut sein sollte - feststellte, dass der manuelle Aufruf des Skripts, das Ding weiter sinnlos "laufen" lässt (erkennbar an dem "Pause"-Button), habe ich ein hartes Beenden des Skripts eingebaut, damit ich nicht selbst immer per Hand abbrechen muss.

      function beendeSkript() {
          log('✅ Beende Skript jetzt...', 'info');
          const maxHandles = 1000;
          for (let i = 1; i < maxHandles; i++) {
              clearTimeout(i);
              clearInterval(i);
          }
          if (typeof stopScript === 'function') stopScript();
          if (typeof process !== 'undefined' && process.exit) process.exit(0);
      }
      

      Ich mutmasse, das das jetzt verhindert, dass eine Zeitsteuerung aktiv ist.

      Fragen:

      1. Woran erkennt man, ob ein Skript aktuell auf eine Zeitsteuerung wartet?
      2. Ist die eine Zeile aus dem Wizard mit den einfachen Anführungszeichen ausreichend für eine Zeitsteuerung?
      3. Muss das Skript "laufen", also der UI-Button als "Pause"-Version sichtbar, damit eine Zeitsteuerung greift?
      4. Was wäre die beste Lösung, um die von mir oben beschriebene Kombination von optional manuellem Aufruf und Zeitsteuerung hinzubekommen?
      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #2

      @bertderkleine

      Der wizard erzeugt die die Konfiguration für den schedule Befehl.
      Das ist der Befehl der dann auf den Zeitpunkt wartet und dann in seinem callback das aufruft was du definiert hast was passieren soll.
      Das Skript muss dazu auch laufen.

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      1 Antwort Letzte Antwort
      3
      • BertDerKleineB BertDerKleine

        Ich bräuchte mal Grundverständnis bzgl. einer Zeitsteuerung eines Javascripts.

        Hintergrund: Ich habe ein Javaskript, das ich (z.B. zum Testen aber auch sonst) gerne einfach manuell auslösen will ohne viel Brimborium. Ansonsten soll es aber i.d.R. automatisch zeitgesteueuert am Monatsersten ablaufen.

        Jetzt sehe ich im iob UI für Javascript a) rechts oben ein Uhr-Symbol, mit dem ich einen Wizard starte für einen CRON-Job.
        Der schreibt mir dann in die erste Zeile des Skriptes

        '{"time":{"exactTime":true,"start":"00:05"},"period":{"months":1,"dates":"[1]"}}'
        

        rein, sonst nix.

        Und ich habe links oben im UI den "play" Button, der das Skript laufen lässt.

        In meinem Fall läuft nach dem Play-Button das Skript einmal durch (während dieser Zeit ändert sich der "play" Button zu einem "Pause" Button) und endet dann (man sieht wieder den "Play"-Button).
        Ich kann nicht erkennen, ob die Zeitsteuerung irgendwie aktiv ist.

        Da ich ursprünglich schon - als die Zeitsteuerung noch nicht eingebaut sein sollte - feststellte, dass der manuelle Aufruf des Skripts, das Ding weiter sinnlos "laufen" lässt (erkennbar an dem "Pause"-Button), habe ich ein hartes Beenden des Skripts eingebaut, damit ich nicht selbst immer per Hand abbrechen muss.

        function beendeSkript() {
            log('✅ Beende Skript jetzt...', 'info');
            const maxHandles = 1000;
            for (let i = 1; i < maxHandles; i++) {
                clearTimeout(i);
                clearInterval(i);
            }
            if (typeof stopScript === 'function') stopScript();
            if (typeof process !== 'undefined' && process.exit) process.exit(0);
        }
        

        Ich mutmasse, das das jetzt verhindert, dass eine Zeitsteuerung aktiv ist.

        Fragen:

        1. Woran erkennt man, ob ein Skript aktuell auf eine Zeitsteuerung wartet?
        2. Ist die eine Zeile aus dem Wizard mit den einfachen Anführungszeichen ausreichend für eine Zeitsteuerung?
        3. Muss das Skript "laufen", also der UI-Button als "Pause"-Version sichtbar, damit eine Zeitsteuerung greift?
        4. Was wäre die beste Lösung, um die von mir oben beschriebene Kombination von optional manuellem Aufruf und Zeitsteuerung hinzubekommen?
        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @bertderkleine sagte: Javaskript, das ich (z.B. zum Testen aber auch sonst) gerne einfach manuell auslösen will ohne viel Brimborium. Ansonsten soll es aber i.d.R. automatisch zeitgesteueuert am Monatsersten ablaufen.

        Das macht man mit einer Funktion, die sowohl zu Monatsbeginn als auch bei Skriptstart aufgerufen wird.

        function actions() {
            // Aktionen 
        }
        
        schedule('5 0 1 * *', actions); // Ausführen zu Monatsbeginn
        
        actions(); // Ausführen bei Skriptstart
        

        Die Funktion wird allerdings auch bei Neustart der Javascript-Instanz ausgeführt, was man verhindern kann:

        function actions() {
            // Aktionen 
        }
        
        schedule('5 0 1 * *', actions); // Ausführen zu Monatsbeginn
        
        if(getState('system.adapter.javascript.0.uptime').val > 60) actions(); // Ausführen bei Skriptstart
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        BertDerKleineB 1 Antwort Letzte Antwort
        2
        • paul53P paul53

          @bertderkleine sagte: Javaskript, das ich (z.B. zum Testen aber auch sonst) gerne einfach manuell auslösen will ohne viel Brimborium. Ansonsten soll es aber i.d.R. automatisch zeitgesteueuert am Monatsersten ablaufen.

          Das macht man mit einer Funktion, die sowohl zu Monatsbeginn als auch bei Skriptstart aufgerufen wird.

          function actions() {
              // Aktionen 
          }
          
          schedule('5 0 1 * *', actions); // Ausführen zu Monatsbeginn
          
          actions(); // Ausführen bei Skriptstart
          

          Die Funktion wird allerdings auch bei Neustart der Javascript-Instanz ausgeführt, was man verhindern kann:

          function actions() {
              // Aktionen 
          }
          
          schedule('5 0 1 * *', actions); // Ausführen zu Monatsbeginn
          
          if(getState('system.adapter.javascript.0.uptime').val > 60) actions(); // Ausführen bei Skriptstart
          
          BertDerKleineB Offline
          BertDerKleineB Offline
          BertDerKleine
          schrieb am zuletzt editiert von
          #4

          @paul53 sagte in Zeitsteuerung Javascript versus UI?:

          @bertderkleine sagte: Javaskript, das ich (z.B. zum Testen aber auch sonst) gerne einfach manuell auslösen will ohne viel Brimborium. Ansonsten soll es aber i.d.R. automatisch zeitgesteueuert am Monatsersten ablaufen.

          Das macht man mit einer Funktion, die sowohl zu Monatsbeginn als auch bei Skriptstart aufgerufen wird.

          function actions() {
              // Aktionen 
          }
          
          schedule('5 0 1 * *', actions); // Ausführen zu Monatsbeginn
          
          actions(); // Ausführen bei Skriptstart
          

          Die Funktion wird allerdings auch bei Neustart der Javascript-Instanz ausgeführt, was man verhindern kann:

          function actions() {
              // Aktionen 
          }
          
          schedule('5 0 1 * *', actions); // Ausführen zu Monatsbeginn
          
          if(getState('system.adapter.javascript.0.uptime').val > 60) actions(); // Ausführen bei Skriptstart
          

          Super, danke! Das hat geholfen.

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          792

          Online

          32.6k

          Benutzer

          82.1k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe