Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Seltsames Verhal. von "für jeden Wert a. d. Liste"

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Seltsames Verhal. von "für jeden Wert a. d. Liste"

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

      Hallo zusammen,

      zuerst einmal die Daten meines Systems:
      Iobroker ist parallel zu OMV auf einem Selbstbau-NAS installiert und läuft seit Jahren Problemlos.

      node / nodejs: 21.2.0
      npm: 10.2.3
      der iobroker-Version (js-controller) zu finden unter Hosts: 5.0.16
      des admin-Adapters: 6.12.0
      Linux-Version: Debian Bullseye

      ich habe das Problem, daß ein Blockly-Script nicht wie erwartet funktioniert.

      Zuerst einmal das Blockly als Bild und dann noch der zugehörige Javascript-Code.
      Darunter folgen dann Erklärungen zum Script.

      blockly.jpg

      for (var j_index in Raum) {
        j = Raum[j_index];
        Parameter = Raum.indexOf(j) + 1;
        Parameter = String(ParamId[(Parameter - 1)]) + ':1';
        console.log(j);
        console.log(Parameter);
        Raumtext = ['0_userdata.0.General.Heizgruppen.',j,'.P'].join('');
        console.log(Raumtext);
        sendTo('hm-rpc.1', 'getParamset', { 'ID': Parameter, 'paramType': 'MASTER' }, async (result) => {
          ERGEBNIS = result;
          console.log(ERGEBNIS);
        });
        console.debug("hm-rpc.1: " + "");
      }
      

      Ziel des Scriptes:
      Das Script soll nacheinander mehrere Datensätze aus einer Raspberrymatic lesen und diese weiterverarbeiten.
      Der Teil zum weiterverarbeiten funktioniert und ist daher hier nicht mit aufgeführt.

      Die Listen:
      Die Liste "Raum" enthält die Werte "EG.BZ" und "EG.WZ"
      Die Liste "ParamId" enthält die Werte "INT0000002" und "INT0000004"

      Erwartetes verhalten des Scriptes:
      Für jeden Wert der Liste Raum werden die Befehle innerhalb der Schleife der Reihe nach ausgeführt.
      1.) Zuerst wird die Position des Schleifenwertes in der Liste "Raum" ermittelt, um dann in der Folgezeile den Wert an der gleichen Position in der Liste "ParamId" zu bekommen.
      Ergebnis: Wertepaarungen "EG.BZ - INT0000002" und "EG.WZ - INT0000004" funktioniert einwandfrei.
      2.) Das setzen der Variable "Raumtext" ist hier nebensächlich und wird nur im nicht dargestellten Teil des Scriptes benötigt
      3.) In jedem Schleifendurchgang soll jetzt mit dem SendTo-Befehl an hm-rpc.1 das Ergebnis-Json abgerufen und ausgegebe werden.
      Auch das funktioniert für sich gesehen einwandfrei. Der Aufruf liefert das korrekte Ergebnis zurück.

      Es soll also im Endeffekt für jeden Raum das entsprechende Ergebnis-Json abgerufen und ausgegeben werden.

      Das Problem:
      Es wird, so wie es aussieht, zuerst zweimal die Positionen 1.) und 2.) ausgeführt.
      Erst danach springt das Script in den SendTo-Teil und führt diesen zweimal aus.
      Ich hatte das dadurch festgestellt, daß ich die Variable "Raumtext" im SendTo-Teil nochmals hatte ausgeben lassen und folgende Ausgabe bekam:

      23:06:34.881	info	javascript.0 (643292) Start javascript script.js.common.test103
      23:06:34.883	info	javascript.0 (643292) script.js.common.test103: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      23:06:34.886	info	javascript.0 (643292) script.js.common.test103: EG.BZ
      23:06:34.886	info	javascript.0 (643292) script.js.common.test103: INT0000002:1
      23:06:34.886	info	javascript.0 (643292) script.js.common.test103: 0_userdata.0.General.Heizgruppen.EG.BZ.P
      23:06:34.886	info	javascript.0 (643292) script.js.common.test103: EG.WZ
      23:06:34.886	info	javascript.0 (643292) script.js.common.test103: INT0000004:1
      23:06:34.886	info	javascript.0 (643292) script.js.common.test103: 0_userdata.0.General.Heizgruppen.EG.WZ.P
      23:06:34.924	info	javascript.0 (643292) script.js.common.test103: {'result':{'P2_ENDTIME_THURSDAY_7':1440, ... ,'P5_TEMPERATURE_THURSDAY_10':17},'error':null}
      23:06:34.924	info	javascript.0 (643292) script.js.common.test103: 0_userdata.0.General.Heizgruppen.EG.WZ.P
      23:06:34.949	info	javascript.0 (643292) script.js.common.test103: {'result':{'P2_ENDTIME_THURSDAY_7':1440, ... ,'P5_TEMPERATURE_THURSDAY_10':17},'error':null}
      23:06:34.949	info	javascript.0 (643292) script.js.common.test103: 0_userdata.0.General.Heizgruppen.EG.WZ.P
      

      Die beiden JSON-Ausgaben habe ich stark eingekürzt, weil jede mehrere hundert Positionen beinhaltet.

      Meine Frage ist jetzt, wie dieses seltsame Verhalten zu erklären ist und wie ich es abstellen kann.

      Ich habe IoBroker jetzt seit ca. 3 Jahren laufen und auch schon jede Menge Blocklys für die verschiedensten Aufgaben erstellt, aber hier finde ich den Fehler einfach nicht.

      Vielen Dank schon mal im Voraus für eure Hilfe und Mühe

      Christoph

      Samson71 Dr. Bakterius 2 Replies Last reply Reply Quote 0
      • Samson71
        Samson71 Global Moderator @ChristophH last edited by

        @christophh sagte in Seltsames Verhalten von "für jeden Wert aus der Liste":

        node / nodejs: 21.2.0

        Falsche Version. Ungerade Versionen sind nicht "stable". Aktuell empfohlen für ioBroker ist 18.

        Linux-Version: Debian Bullseye

        Sollte ebenfalls aktualisiert werden.

        C 1 Reply Last reply Reply Quote 0
        • Dr. Bakterius
          Dr. Bakterius Most Active @ChristophH last edited by

          @christophh sagte in Seltsames Verhalten von "für jeden Wert aus der Liste":

          Meine Frage ist jetzt, wie dieses seltsame Verhalten zu erklären ist und wie ich es abstellen kann.

          Nur ein Schuss ins Blaue: vielleicht braucht der sendto-Block mehr Zeit. Setze doch mal nach diesem Block eine Pause, vielleicht klappt es dann.

          C 1 Reply Last reply Reply Quote 0
          • C
            ChristophH @Samson71 last edited by ChristophH

            @samson71 said in Seltsames Verhalten von "für jeden Wert aus der Liste":

            @christophh sagte in Seltsames Verhalten von "für jeden Wert aus der Liste":

            node / nodejs: 21.2.0

            Falsche Version. Ungerade Versionen sind nicht "stable". Aktuell empfohlen für ioBroker ist 18.

            Bin gerade dabei, auf 18 zu aktualisieren. Vielen Dank für den Hinweis.

            Linux-Version: Debian Bullseye

            Sollte ebenfalls aktualisiert werden.

            Gebe ich dir recht, allerdings läuft Openmediavault noch nicht unter Debian Bookworm. Habe ich schonmal nachgesehen.
            Muß also erstmal auf Bullseye bleiben, wird aber aktualisiert, sobald OMV unter Bookworm läuft.

            Edit:
            nodejs ist jetzt auf v18.19.0

            1 Reply Last reply Reply Quote 0
            • C
              ChristophH @Dr. Bakterius last edited by

              @dr-bakterius said in Seltsames Verhalten von "für jeden Wert aus der Liste":

              @christophh sagte in Seltsames Verhalten von "für jeden Wert aus der Liste":

              Meine Frage ist jetzt, wie dieses seltsame Verhalten zu erklären ist und wie ich es abstellen kann.

              Nur ein Schuss ins Blaue: vielleicht braucht der sendto-Block mehr Zeit. Setze doch mal nach diesem Block eine Pause, vielleicht klappt es dann.

              Das war es, vielen Dank. Es reicht bei mir eine Pause von 100ms.

              Damit ist das Problem gelöst

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

              Support us

              ioBroker
              Community Adapters
              Donate

              418
              Online

              32.0k
              Users

              80.4k
              Topics

              1.3m
              Posts

              3
              5
              158
              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