Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. (GELÖST) Blockly Inhalt wird immer doppelt ausgeführt.

    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

    (GELÖST) Blockly Inhalt wird immer doppelt ausgeführt.

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      rayman last edited by rayman

      Hallo zusammen,

      ich habe ein bestimmtes Problem mit Blockly bzw einem Script in dem ich halt Blockly verwende.

      Das Script tut grundsätzlich genau das was es soll. Beobachten ob sich ein Objekt ändert und wenn ja dann bei Änderung etwas tun.

      Allerdings läuft der Inhalt immer zwei Mal ab. Und ich weiß einfach nicht warum.

      Bilder sagen mehr als 1000 Worte.

      Bildschirmfoto 2019-05-08 um 15.51.43.png

      Hier wurde der Wert auf 4 geändert
      Bildschirmfoto 2019-05-08 um 15.55.00.png

      Hier wurde der Wert auf -10 geändert
      Bildschirmfoto 2019-05-08 um 15.56.43.png

      Hier wurde der Wert auf 3 geändert
      Bildschirmfoto 2019-05-08 um 15.57.26.png

      Immer wird der Inhalt zwei Mal ausgeführt.

      Was wird gemacht. Es wird ein API Call auf einen Webserver ausgeführt der dann ein Infrarotsignal an meinen Subwoofer sendet. Der Subwoofer ändert dann entsprechend das Volume um jeweils +1 oder -1.

      Klappt immer, aber halt doppelt 😞

      Was habe ich erfolglos versucht:

      • Ich kann das Objekt (eigene-objekte.0.Keller.Kino.Subwoofer.Nubert.vol_value) das abgegriffen wird per Alexa, per App oder direkt im ioBroker ändern
      • Objekttrigger umgestellt auf "wurde geändert" wurde aktualisiert"
      • Habe bei "Falls wert von Objekt ist gleich" einfach mal von ungleich null auf eine fixe Zahl gestellt
      • Habe alles an Logik in der Schleife "Falls Wert von Objekt..." gelöscht un nur eine Telegram Nachricht verschickt
      • javascript.0 Instanz neu gestartet
      • Habe den Entrpeller mal eingebaut (https://forum.iobroker.net/assets/uploads/files/1551202808102-entpreller.jpg)
      • Server rebootet

      Habe am Ende sogar alles neu gemacht.... 😞

      Jemand eine Idee?

      Update:

      Habe das Script nach Javascript umgewandelt und einen Freund drüber schauen lassen:

      var volValue, volValueOrig, volVariable, timeout;
      
      
      on({id: 'eigene-objekte.0.Keller.Kino.Subwoofer.Nubert.vol_value', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("eigene-objekte.0.Keller.Kino.Subwoofer.Nubert.vol_value").val != 0) {
          volValue = getState("eigene-objekte.0.Keller.Kino.Subwoofer.Nubert.vol_value").val;
          volValueOrig = getState("eigene-objekte.0.Keller.Kino.Subwoofer.Nubert.vol_value").val;
          if (volValue > 0) {
            volVariable = 'vol_up';
          }
          if (volValue < 0) {
            volVariable = 'vol_down';
            volValue = volValue * -1;
          }
          sendTo("telegram.1", "send", {
              text: (['Wert von Objekt','\n',volValueOrig,'\n','Anzahl Aktionen:','\n',volValue,'\n','Ausführen:','\n',volVariable].join(''))
          });
          console.log("telegram: " + (['Wert von Objekt','\n',volValueOrig,'\n','Anzahl Aktionen:','\n',volValue,'\n','Ausführen:','\n',volVariable].join('')));
          for (var count = 0; count < volValue; count++) {
            timeout = setTimeout(function () {
              try {
                require("request")((['http://',getState("eigene-objekte.0.Server.Pi.pisubwoofer.fqdn").val,'/irctl?remote=nubertsubwoofer&function=',volVariable,'&action=SEND_ONCE'].join(''))).on("error", function (e) {console.error(e);});
              } catch (e) { console.error(e); }
              console.log("request: " + (['http://',getState("eigene-objekte.0.Server.Pi.pisubwoofer.fqdn").val,'/irctl?remote=nubertsubwoofer&function=',volVariable,'&action=SEND_ONCE'].join('')));
            }, 100);
          }
          setState("eigene-objekte.0.Keller.Kino.Subwoofer.Nubert.vol_value"/*Nubert.Subwoofer.vol.value*/, 0, true);
        }
      });
      
      

      Update 2:

      Eine weitere Idee -> ps -A | grep io hat leider auch nicht geholfen. Java läuft nur ein Mal.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @rayman last edited by paul53

        @rayman Zum Schluss wird der Triggerdatenpunkt auf 0 gesetzt, wodurch wieder getriggert wird.
        Außerdem: Anstelle von wiederhole und Ausführen timeout verwende Ausführen Intervall und zähle im Intervall die Variable volValue runter, bei 0 stoppe das Intervall.

        R 1 Reply Last reply Reply Quote 1
        • R
          rayman @paul53 last edited by

          @paul53 sagte in Blockly Inhalt wird immer doppelt ausgeführt.:

          @rayman Zum Schluss wird der Triggerdatenpunkt auf 0 gesetzt, wodurch wieder getriggert wird.
          Außerdem: Anstelle von wiederhole und Ausführen timeout verwende Ausführen Intervall und zähle im Intervall die Variable volValue runter, bei 0 stoppe das Intervall.

          Danke dir Paul. Ich habe den Eintrag nun wie folgt angepasst:
          Bildschirmfoto 2019-05-09 um 08.48.51.png

          Klappt:
          Bildschirmfoto 2019-05-09 um 08.49.12.png

          Danke dir für die rasche und gute Hilfe!

          Ich markiere den Thread nun als ERLEDIGT

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          753
          Online

          31.8k
          Users

          79.9k
          Topics

          1.3m
          Posts

          blockly javascript
          2
          3
          1015
          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