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. (GELÖST) Blockly Inhalt wird immer doppelt ausgeführt.

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptblockly
3 Beiträge 2 Kommentatoren 1.1k Aufrufe 1 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.
  • R Offline
    R Offline
    rayman
    schrieb am zuletzt editiert von rayman
    #1

    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.

    paul53P 1 Antwort Letzte Antwort
    0
    • R 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.

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

      @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.

      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

      R 1 Antwort Letzte Antwort
      1
      • paul53P 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 Offline
        R Offline
        rayman
        schrieb am zuletzt editiert von
        #3

        @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 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

        502

        Online

        32.6k

        Benutzer

        82.2k

        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