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. JavaScript
  5. Script starten nach start der Javascript Instanz

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

Script starten nach start der Javascript Instanz

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 3 Kommentatoren 490 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.
  • H Offline
    H Offline
    hschief
    schrieb am zuletzt editiert von
    #1

    Liebes Forum,

    ich habe da mal mit Sicherheit eine Anfängerfrage. Ich habe diverse Scripts die bei Eventänderungen agieren, zb. bei Änderung einer Wechzeit wird die alte Wechzeit gelöscht und eine neue Zeit als Scheduleevent eingetragen.
    Wenn nun die Scriptinstanz neu starten sind die Schedulejobs alle weg. Ich suche daher einen Weg nach dem Start des Scriptadapters dies dann initial einmal anzuschieben.

    Hat da jemand eine Idee?
    Viele Güße
    Helmut

    BananaJoeB paul53P 2 Antworten Letzte Antwort
    0
    • H hschief

      Liebes Forum,

      ich habe da mal mit Sicherheit eine Anfängerfrage. Ich habe diverse Scripts die bei Eventänderungen agieren, zb. bei Änderung einer Wechzeit wird die alte Wechzeit gelöscht und eine neue Zeit als Scheduleevent eingetragen.
      Wenn nun die Scriptinstanz neu starten sind die Schedulejobs alle weg. Ich suche daher einen Weg nach dem Start des Scriptadapters dies dann initial einmal anzuschieben.

      Hat da jemand eine Idee?
      Viele Güße
      Helmut

      BananaJoeB Online
      BananaJoeB Online
      BananaJoe
      Most Active
      schrieb am zuletzt editiert von
      #2

      @hschief Du musst in deinem Skript diesen Neustart-Fall vorsehen. (Super Aussage, ich weis).

      Ich hab da zum Beispiel einige Skripte die z.B. Tageswerte summieren oder Anzeigen ob etwas im Briefkasten liegt.

      Bei meinem Summen läuft das zwar in Variablen, er speichert sich den Tageswert aber auch jedes Mal in einen Datenpunkt ab. Beim Start des Skriptes lädt sich die Variable den Wert einmalig aus den Datenpunkt.
      Und wenn ich um Mitternacht die Variable wieder auf 0 setze mache ich das auch mit dem Datenpunkt.

      Du müsstest also jedes Mal wenn du eine neue "Wechzeit" (Weckzeit?) setzt dir diese auch in einen Datenpunkt speichern. Wird diese erreicht setzt du den Datenpunkt auf etwas unverfängliches, z.B. 0.
      Beim Start des Skriptes holst du dir den Inhalt des Datenpunktes - und wenn der nicht 0 ist setzt du gleich das Event.

      Hinweis am Rande: In Eventtriggern Schedules zu setzen kann böse enden. Löst der Trigger 10 mal aus hast du auch 10 Schedules, also bitte schön darauf achten wie du das machst so dass es auch wirklich nur ein bzw. die beabsichtigte Menge an Schedule gibt.

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

      1 Antwort Letzte Antwort
      0
      • H hschief

        Liebes Forum,

        ich habe da mal mit Sicherheit eine Anfängerfrage. Ich habe diverse Scripts die bei Eventänderungen agieren, zb. bei Änderung einer Wechzeit wird die alte Wechzeit gelöscht und eine neue Zeit als Scheduleevent eingetragen.
        Wenn nun die Scriptinstanz neu starten sind die Schedulejobs alle weg. Ich suche daher einen Weg nach dem Start des Scriptadapters dies dann initial einmal anzuschieben.

        Hat da jemand eine Idee?
        Viele Güße
        Helmut

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #3

        @hschief sagte: nach dem Start des Scriptadapters dies dann initial einmal anzuschieben.

        Packe den Wecker in eine Funktion und rufe diese bei Skriptstart und bei Änderung der Uhrzeit auf.

        const idWeckzeit = 'abc'; // Weckzeit in hh:mm
        
        var sched1;
        
        function wecker(uhrzeit) {
            let t = uhrzeit.split(':'); 
            sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                // Aktionen zur Weckzeit
            });
        }
        
        wecker(getState(idWeckzeit).val); // Skriptstart
        
        on(idWeckzeit, function(dp) {
            clearSchedule(sched1);
            wecker(dp.state.val);
        });
        

        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

        H 1 Antwort Letzte Antwort
        1
        • paul53P paul53

          @hschief sagte: nach dem Start des Scriptadapters dies dann initial einmal anzuschieben.

          Packe den Wecker in eine Funktion und rufe diese bei Skriptstart und bei Änderung der Uhrzeit auf.

          const idWeckzeit = 'abc'; // Weckzeit in hh:mm
          
          var sched1;
          
          function wecker(uhrzeit) {
              let t = uhrzeit.split(':'); 
              sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                  // Aktionen zur Weckzeit
              });
          }
          
          wecker(getState(idWeckzeit).val); // Skriptstart
          
          on(idWeckzeit, function(dp) {
              clearSchedule(sched1);
              wecker(dp.state.val);
          });
          
          H Offline
          H Offline
          hschief
          schrieb am zuletzt editiert von
          #4

          @paul53 Hallo Paul, vielen Dank, ich werde dies in dieser Form machen.
          Ich hatte mir gestern auch noch die Funktion ListSchedules angesehen um die laufenden Schedules auszuwerten und dann zu starten wenn der Schedule für den Tag nicht gesetzt ist.

          Mit deiner Lösung ist es aber deutlich effizienter.

          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

          604

          Online

          32.5k

          Benutzer

          81.7k

          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