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 funktioniert manchmal nur nach Script Neustart

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Script funktioniert manchmal nur nach Script Neustart

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

    Hallo zusammen,
    ich habe ein Script das eine Senderwahl für Radiosender realisieren soll.
    Nutze einen einfachen Zigbee Taster dafür, der je nach dem wie oft gedrückt der entsprechende Sender gewählt wird.
    Dafür habe ich ein TimeOut von 3 Sekunden eingebaut bei dem die Auswertung erfolgt wie oft gedrückt wurde.
    Wird die Taste innerhalb der 3 Sekunden nochmal gedrückt dann wird die Variable "sender" erhöht.

    Mein Problem ist das es nur ein halben Tag funktioniert, danach erfolgt bei dem Script keine Reaktion mehr.
    Es reicht in diesem Fall das ich das Script anhalte und einfach neustarte.
    Habe schon diverse Log Ausgaben eingebaut um zu sehen wo es hakt.... er kommt nicht mal mehr in die Tasten Erkennungsroutine rein am Anfang.

    var sender, senderalt, timeout, timeout2;
    sender = 0;
    
    on({id:'alias.0.Kueche.RadioSwitch.BUTTON', change: "gt"}, async function (obj) {
        if (getState("alias.0.Kueche.RadioSwitch.BUTTON").val == 1002) {
            console.log("TASTE ERKANNT - SENDER VORHER:" + sender);
            clearTimeout(timeout);
                if (getState("alias.0.Kueche.Player.PLAYERSTATE").val == 'playing') {
                setState("alias.0.Kueche.Player.STOP", true);
                sender = 0;
                console.log("STOPPE MUSIK");
                } else if (sender < 6) {
                sender++;
                console.log("ERHÖHE SENDER UM 1:"+sender);
                } else if (sender == 6) {
                sender = 6;
                }
    
        //Radiosender abspielen
        timeout = setTimeout(async function () {
          if (sender == 1) {
            setState("alias.0.Kueche.Player.URL", '{"url":"http://streams.radiopsr.de/psr-live/mp3-192/mediaplayer","volume":"30"}');
            await wait(500);
            console.log("SPIELE PSR");
            sender = 0;
          } else if (sender == 2) {
            setState("alias.0.Kueche.Player.URL", '{"url":"http://mp3.planetradio.de/planetradio/hqlivestream.mp3","volume":"30"}');
            await wait(500);
            console.log("SPIELE PLANET");
            sender = 0;
          } else if (sender > 2) {
            sender = 0;
            console.log("SENDER WAR GROESSER 2");
          }  
        }, 3000);
    

    Das change: hatte ich Anfangs in Verdacht und habe es auch schon auf "ne" geändert, brachte aber keine Besserung.
    Bei allen anderen Scripts habe ich keine derartigen Probleme.

    Im Badezimmer habe ich von der Funktion her das gleiche Script...der Code stammt hier aus einer Konvertierung aus Blockly.
    Hier besteht das Problem nicht.
    Die "on id" Abfrage am Anfang sieht hier anders aus, wobei mir hier der Code nicht ganz klar ist (bin noch Anfänger):

    on({id: [].concat(['alias.0.Bad.RadioSwitch.BUTTON']), change: "ne"}, async function (obj) {
      //var value = obj.state.val;
      //var oldValue = obj.oldState.val;
      (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
    

    Hat jemand einen Tip für mich?

    bahnuhrB G 2 Antworten Letzte Antwort
    0
    • C chefffe

      Hallo zusammen,
      ich habe ein Script das eine Senderwahl für Radiosender realisieren soll.
      Nutze einen einfachen Zigbee Taster dafür, der je nach dem wie oft gedrückt der entsprechende Sender gewählt wird.
      Dafür habe ich ein TimeOut von 3 Sekunden eingebaut bei dem die Auswertung erfolgt wie oft gedrückt wurde.
      Wird die Taste innerhalb der 3 Sekunden nochmal gedrückt dann wird die Variable "sender" erhöht.

      Mein Problem ist das es nur ein halben Tag funktioniert, danach erfolgt bei dem Script keine Reaktion mehr.
      Es reicht in diesem Fall das ich das Script anhalte und einfach neustarte.
      Habe schon diverse Log Ausgaben eingebaut um zu sehen wo es hakt.... er kommt nicht mal mehr in die Tasten Erkennungsroutine rein am Anfang.

      var sender, senderalt, timeout, timeout2;
      sender = 0;
      
      on({id:'alias.0.Kueche.RadioSwitch.BUTTON', change: "gt"}, async function (obj) {
          if (getState("alias.0.Kueche.RadioSwitch.BUTTON").val == 1002) {
              console.log("TASTE ERKANNT - SENDER VORHER:" + sender);
              clearTimeout(timeout);
                  if (getState("alias.0.Kueche.Player.PLAYERSTATE").val == 'playing') {
                  setState("alias.0.Kueche.Player.STOP", true);
                  sender = 0;
                  console.log("STOPPE MUSIK");
                  } else if (sender < 6) {
                  sender++;
                  console.log("ERHÖHE SENDER UM 1:"+sender);
                  } else if (sender == 6) {
                  sender = 6;
                  }
      
          //Radiosender abspielen
          timeout = setTimeout(async function () {
            if (sender == 1) {
              setState("alias.0.Kueche.Player.URL", '{"url":"http://streams.radiopsr.de/psr-live/mp3-192/mediaplayer","volume":"30"}');
              await wait(500);
              console.log("SPIELE PSR");
              sender = 0;
            } else if (sender == 2) {
              setState("alias.0.Kueche.Player.URL", '{"url":"http://mp3.planetradio.de/planetradio/hqlivestream.mp3","volume":"30"}');
              await wait(500);
              console.log("SPIELE PLANET");
              sender = 0;
            } else if (sender > 2) {
              sender = 0;
              console.log("SENDER WAR GROESSER 2");
            }  
          }, 3000);
      

      Das change: hatte ich Anfangs in Verdacht und habe es auch schon auf "ne" geändert, brachte aber keine Besserung.
      Bei allen anderen Scripts habe ich keine derartigen Probleme.

      Im Badezimmer habe ich von der Funktion her das gleiche Script...der Code stammt hier aus einer Konvertierung aus Blockly.
      Hier besteht das Problem nicht.
      Die "on id" Abfrage am Anfang sieht hier anders aus, wobei mir hier der Code nicht ganz klar ist (bin noch Anfänger):

      on({id: [].concat(['alias.0.Bad.RadioSwitch.BUTTON']), change: "ne"}, async function (obj) {
        //var value = obj.state.val;
        //var oldValue = obj.oldState.val;
        (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
      

      Hat jemand einen Tip für mich?

      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @chefffe
      anbei mal ein paar Anmerkungen:

      @chefffe sagte in Script funktioniert manchmal nur nach Script Neustart:

      change: "gt"

      Bist du sicher, dass du gt willst. Ich benutze fasst ausschließlich ne.

      ccb3879c-aa44-4c53-a98f-0413a3997fa5-image.png
      1002 ist eine Zahl; ist das richtig ?
      Der Variablen sender wurde nix neues zugewiesen. Also dürfte der Wert immer 0 sein.

      cc169cf5-5e08-4192-9c4e-909d429ebb58-image.png
      Was willst du dort mit sender++
      Und unten: Wenn sender 6 ist warum dann nochmal sender = 6 ?


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      C 1 Antwort Letzte Antwort
      0
      • C chefffe

        Hallo zusammen,
        ich habe ein Script das eine Senderwahl für Radiosender realisieren soll.
        Nutze einen einfachen Zigbee Taster dafür, der je nach dem wie oft gedrückt der entsprechende Sender gewählt wird.
        Dafür habe ich ein TimeOut von 3 Sekunden eingebaut bei dem die Auswertung erfolgt wie oft gedrückt wurde.
        Wird die Taste innerhalb der 3 Sekunden nochmal gedrückt dann wird die Variable "sender" erhöht.

        Mein Problem ist das es nur ein halben Tag funktioniert, danach erfolgt bei dem Script keine Reaktion mehr.
        Es reicht in diesem Fall das ich das Script anhalte und einfach neustarte.
        Habe schon diverse Log Ausgaben eingebaut um zu sehen wo es hakt.... er kommt nicht mal mehr in die Tasten Erkennungsroutine rein am Anfang.

        var sender, senderalt, timeout, timeout2;
        sender = 0;
        
        on({id:'alias.0.Kueche.RadioSwitch.BUTTON', change: "gt"}, async function (obj) {
            if (getState("alias.0.Kueche.RadioSwitch.BUTTON").val == 1002) {
                console.log("TASTE ERKANNT - SENDER VORHER:" + sender);
                clearTimeout(timeout);
                    if (getState("alias.0.Kueche.Player.PLAYERSTATE").val == 'playing') {
                    setState("alias.0.Kueche.Player.STOP", true);
                    sender = 0;
                    console.log("STOPPE MUSIK");
                    } else if (sender < 6) {
                    sender++;
                    console.log("ERHÖHE SENDER UM 1:"+sender);
                    } else if (sender == 6) {
                    sender = 6;
                    }
        
            //Radiosender abspielen
            timeout = setTimeout(async function () {
              if (sender == 1) {
                setState("alias.0.Kueche.Player.URL", '{"url":"http://streams.radiopsr.de/psr-live/mp3-192/mediaplayer","volume":"30"}');
                await wait(500);
                console.log("SPIELE PSR");
                sender = 0;
              } else if (sender == 2) {
                setState("alias.0.Kueche.Player.URL", '{"url":"http://mp3.planetradio.de/planetradio/hqlivestream.mp3","volume":"30"}');
                await wait(500);
                console.log("SPIELE PLANET");
                sender = 0;
              } else if (sender > 2) {
                sender = 0;
                console.log("SENDER WAR GROESSER 2");
              }  
            }, 3000);
        

        Das change: hatte ich Anfangs in Verdacht und habe es auch schon auf "ne" geändert, brachte aber keine Besserung.
        Bei allen anderen Scripts habe ich keine derartigen Probleme.

        Im Badezimmer habe ich von der Funktion her das gleiche Script...der Code stammt hier aus einer Konvertierung aus Blockly.
        Hier besteht das Problem nicht.
        Die "on id" Abfrage am Anfang sieht hier anders aus, wobei mir hier der Code nicht ganz klar ist (bin noch Anfänger):

        on({id: [].concat(['alias.0.Bad.RadioSwitch.BUTTON']), change: "ne"}, async function (obj) {
          //var value = obj.state.val;
          //var oldValue = obj.oldState.val;
          (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
        

        Hat jemand einen Tip für mich?

        G Online
        G Online
        GombersIOB
        schrieb am zuletzt editiert von
        #3

        @chefffe said in Script funktioniert manchmal nur nach Script Neustart:

        Hat jemand einen Tip für mich?

        Ich würde dem Ganzen noch zwei geschweifte und eine runde Klammer am Ende spendieren.

        	3000);
         }});
        
        1 Antwort Letzte Antwort
        0
        • bahnuhrB bahnuhr

          @chefffe
          anbei mal ein paar Anmerkungen:

          @chefffe sagte in Script funktioniert manchmal nur nach Script Neustart:

          change: "gt"

          Bist du sicher, dass du gt willst. Ich benutze fasst ausschließlich ne.

          ccb3879c-aa44-4c53-a98f-0413a3997fa5-image.png
          1002 ist eine Zahl; ist das richtig ?
          Der Variablen sender wurde nix neues zugewiesen. Also dürfte der Wert immer 0 sein.

          cc169cf5-5e08-4192-9c4e-909d429ebb58-image.png
          Was willst du dort mit sender++
          Und unten: Wenn sender 6 ist warum dann nochmal sender = 6 ?

          C Offline
          C Offline
          chefffe
          schrieb am zuletzt editiert von
          #4

          @bahnuhr

          Wie gesagt "ne" hab ich auch schon drin gehabt, funktioniert auch.
          Die "1002" ist eine Zahl, sozusagen der Status für einmal kurz drücken - der springt dann wieder zurück auf "0".
          Es stimmt was du sagst....die Variable "sender" hat am Anfang "0", ich wollte hier nur eine Ausgabe machen ob er hier im Programm durchkommt bzw ob Sender "0" hat abfragen.
          Das unten mit dem sender == 6 ist natürlich quatsch, sollte heissen sender > 6.

          @GombersIOB

          Das mit der Klammer probiere ich mal.....

          Komisch ist nur das der Code einwandfrei funktioniert und spätestens nach einem Tag passiert hier gar nix mehr.
          Script Pause und wieder Play und dann läuft er wieder ohne zu murren für einen weiteren Tag.

          Hab den Codeteil mit dem "on id" vom Bad mal in der Küche reingenommen....wenns im anderen Raum funktioniert muss es hier ja auch gehen.

          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

          420

          Online

          32.6k

          Benutzer

          82.3k

          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