Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.8k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    737

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

[gelöst] Zeitsteuerung Javascript versus UI?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 286 Aufrufe 2 Beobachtet
  • Ä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: Asus PN 42 / N100 / 8 GB / 500 GB

        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

          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

          Registrieren Anmelden
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          551

          Online

          32.9k

          Benutzer

          83.0k

          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