Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Blockly
  5. [gelöst] Seltsames Verhal. von "für jeden Wert a. d. Liste"

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    334

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    300

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    929

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

Geplant Angeheftet Gesperrt Verschoben Blockly
5 Beiträge 3 Kommentatoren 209 Aufrufe 1 Beobachtet
  • Ä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
    ChristophH
    schrieb am zuletzt editiert von ChristophH
    #1

    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

    Samson71S Dr. BakteriusD 2 Antworten Letzte Antwort
    0
    • C 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

      Samson71S Offline
      Samson71S Offline
      Samson71
      Global Moderator
      schrieb am zuletzt editiert von
      #2

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

      Markus

      Bitte beachten:
      Hinweise für gute Forenbeiträge
      Maßnahmen zum Schutz des Forums

      C 1 Antwort Letzte Antwort
      0
      • C 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

        Dr. BakteriusD Online
        Dr. BakteriusD Online
        Dr. Bakterius
        Most Active
        schrieb am zuletzt editiert von
        #3

        @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 Antwort Letzte Antwort
        0
        • Samson71S Samson71

          @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 Offline
          C Offline
          ChristophH
          schrieb am zuletzt editiert von ChristophH
          #4

          @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 Antwort Letzte Antwort
          0
          • Dr. BakteriusD Dr. Bakterius

            @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 Offline
            C Offline
            ChristophH
            schrieb am zuletzt editiert von
            #5

            @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 Antwort Letzte Antwort
            0

            Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

            Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

            Mit deinem Input könnte dieser Beitrag noch besser werden 💗

            Registrieren Anmelden
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            560

            Online

            32.8k

            Benutzer

            82.8k

            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