Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Javascript Problem nach Neustart

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    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.5k

Javascript Problem nach Neustart

Scheduled Pinned Locked Moved Skripten / Logik
javascript
3 Posts 2 Posters 501 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Chris_78
    wrote on last edited by
    #1

    Hi zusammen,

    ich habe ein paar Scripte die zeitgesteuert z.B. die Rollos steuern.

    Beispiel:

    function Wert_Stunden(x) {
        return x.slice(0, 2);
    }
    
    function Wert_Minuten(x) {
        return x.slice(3, 5);
    }
    
    function unSchedule(schedule) {
        if (schedule) {
            clearSchedule(schedule); 
            schedule = null;
        }
    }
    on({id: new RegExp('javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Aktiv' + "|" + 'javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Modus' + "|" + 'javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Uhrzeit' + "|" + 'javascript\\.0\\.System\\.Script_Restarter'), change: "ne"}, function (obj) {
        if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Aktiv").val == 1) {
            var uhrzeit = getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Uhrzeit").val;
            unSchedule(Cron1_Rollo_Schlafzimmer);
            Cron1_Rollo_Schlafzimmer = schedule(Wert_Minuten(uhrzeit) + ' ' + Wert_Stunden(uhrzeit) + ' * * *', function () {
                if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Modus").val == 'rauf') {
                    setState("zwave2.0.Node_011.Multilevel_Switch.targetValue", 0);
                } else if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Modus").val == 'runter') {
                    setState("zwave2.0.Node_011.Multilevel_Switch.targetValue", 99);
                }
            });
        } else {
            unSchedule(Cron1_Rollo_Schlafzimmer);
        }
    });
    

    Die Trigger sind Datenpunkte die per VIS gesetzt werden.
    Das Problem ist, dass das Skript nach einem ioBroker oder Javascript-Adapter Neustart nicht mehr getriggert wird
    (erst wieder wenn ich einen der Trigger per VIS verändere).
    Als Behelfslösung habe ich mir einen kleines Miniscript erzeugt, dass ich nach Neustart einmal ausführe (Trigger: Script_Restarter).
    Dieses Mini-Script habe ich überall in den problematischen Scripten als Trigger hinzugefügt. Manchmal vergesse ich aber nach einem
    Neustart das Script zu starten. Dann funktioniert natürlich "nichts"...

    Bin ich der einzige der solche Probleme hat? Hat jemand eine elegantere Lösung für das Problem?
    Ich bin auch offen für allgemeine Script-Opimierungen. :-)

    Gruß
    Christian

    paul53P 1 Reply Last reply
    0
    • C Chris_78

      Hi zusammen,

      ich habe ein paar Scripte die zeitgesteuert z.B. die Rollos steuern.

      Beispiel:

      function Wert_Stunden(x) {
          return x.slice(0, 2);
      }
      
      function Wert_Minuten(x) {
          return x.slice(3, 5);
      }
      
      function unSchedule(schedule) {
          if (schedule) {
              clearSchedule(schedule); 
              schedule = null;
          }
      }
      on({id: new RegExp('javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Aktiv' + "|" + 'javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Modus' + "|" + 'javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Uhrzeit' + "|" + 'javascript\\.0\\.System\\.Script_Restarter'), change: "ne"}, function (obj) {
          if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Aktiv").val == 1) {
              var uhrzeit = getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Uhrzeit").val;
              unSchedule(Cron1_Rollo_Schlafzimmer);
              Cron1_Rollo_Schlafzimmer = schedule(Wert_Minuten(uhrzeit) + ' ' + Wert_Stunden(uhrzeit) + ' * * *', function () {
                  if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Modus").val == 'rauf') {
                      setState("zwave2.0.Node_011.Multilevel_Switch.targetValue", 0);
                  } else if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Modus").val == 'runter') {
                      setState("zwave2.0.Node_011.Multilevel_Switch.targetValue", 99);
                  }
              });
          } else {
              unSchedule(Cron1_Rollo_Schlafzimmer);
          }
      });
      

      Die Trigger sind Datenpunkte die per VIS gesetzt werden.
      Das Problem ist, dass das Skript nach einem ioBroker oder Javascript-Adapter Neustart nicht mehr getriggert wird
      (erst wieder wenn ich einen der Trigger per VIS verändere).
      Als Behelfslösung habe ich mir einen kleines Miniscript erzeugt, dass ich nach Neustart einmal ausführe (Trigger: Script_Restarter).
      Dieses Mini-Script habe ich überall in den problematischen Scripten als Trigger hinzugefügt. Manchmal vergesse ich aber nach einem
      Neustart das Script zu starten. Dann funktioniert natürlich "nichts"...

      Bin ich der einzige der solche Probleme hat? Hat jemand eine elegantere Lösung für das Problem?
      Ich bin auch offen für allgemeine Script-Opimierungen. :-)

      Gruß
      Christian

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      @Chris_78 sagte:

      dass das Skript nach einem ioBroker oder Javascript-Adapter Neustart nicht mehr getriggert wird

      Du meinst, dass schedule() nicht mehr ausgeführt wird ? Das liegt daran, dass schedule() nur innerhalb des Triggers erzeugt wird und nicht beim Script start. Verwende eine Funktion, die bei Script start und im Trigger aufgerufen wird.

      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

      C 1 Reply Last reply
      0
      • paul53P paul53

        @Chris_78 sagte:

        dass das Skript nach einem ioBroker oder Javascript-Adapter Neustart nicht mehr getriggert wird

        Du meinst, dass schedule() nicht mehr ausgeführt wird ? Das liegt daran, dass schedule() nur innerhalb des Triggers erzeugt wird und nicht beim Script start. Verwende eine Funktion, die bei Script start und im Trigger aufgerufen wird.

        C Offline
        C Offline
        Chris_78
        wrote on last edited by
        #3

        @paul53

        Danke dir. Manchmal sieht man die einfachen Lösungen nicht. :-)

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        752

        Online

        32.5k

        Users

        81.7k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Home
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe