Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script funktioniert manchmal nur nach Script Neustart

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script funktioniert manchmal nur nach Script Neustart

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      chefffe last edited by 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?

      bahnuhr G 2 Replies Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @chefffe last edited by

        @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 1 Reply Last reply Reply Quote 0
        • G
          GombersIOB @chefffe last edited by

          @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 Reply Last reply Reply Quote 0
          • C
            chefffe @bahnuhr last edited by

            @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 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            589
            Online

            31.8k
            Users

            80.0k
            Topics

            1.3m
            Posts

            3
            4
            186
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo