Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Loop Problem

    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

    Loop Problem

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

      Moin, wieder mal ich mit einem Loop Problem ... irgendwie raff ich es nicht und brauche mal wieder eure Hilfe.
      Also, ich habe eine Funktion die mir Höchst und Tiefstwerte eines Datenpunkts speichern soll.
      Da es insgesamt 21 Datenpunkte (Kurs1 - Kurs21) sind die überwacht werden, lasse ich einen Loop über die Datenpunkte laufen.
      Die Daten sollen dann mit dem bisherigen Wert von den Datenpunkten (High1 - High21; Low1 - Low21)verglichen werden und falls der Wert tiefer oder höher ist die bisherigen Werte der entsprechenden Datenpunkte überschreiben.
      Mein Ansatz sieht so aus:

      function HiLo() {
        for (let i = 1; i <= 21; i++) {
          const kursId = `Kurs${i}`; // Namen Kurs1 - Kurs21 vergeben
          const lowId = `Low${i}`; // Namen Low1 - Low21 vergeben
          const highId = `High${i}`; // Namen High1 - High21 vergeben
          const kursValue = getState(kursId).val; // Wert von Kurs1 - Kurs21 holen
          const lowValue = getState(lowId).val; // Wert von Low1 - Low21 holen
          const highValue = getState(highId).val; // Wert von High1 - High21 holen
      
          if (kursValue < lowValue) setState(lowId, kursId, true);
          if (kursValue > highValue) setState(highId, kursId, true);
      }
      };
      

      Die Werte von kursId, lowId, highId entsprechen laut einem Konsolencheck auch jeweils auch dem Namen Kurs1, Low1 und High1 usw. aber die davon ausgelesenen Werte (obwohl im Datenpunkt vorhanden und mit Werten) ergeben immer "null".
      Was mache ich denn falsch?
      Wahrscheinlich bin ich aber für die ganze Funktion wieder mal viel zu kompliziert unterwegs, oder?
      Aber ich versuche es zumindest immer erst mal selbst hinzukriegen bevor ich hier frage 😁

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

        @smartin sagte: Namen Kurs1, Low1 und High1

        Die Namen sind keine gültigen Datenpunkt-IDs.

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

          @paul53
          Ah ok danke, dann ist natürlich klar das nichts ausgelesen wird.
          Und wie werden da gültige Datenpunkt-IDs draus?

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

            @smartin sagte: Und wie werden da gültigen Datenpunkt-IDs draus?

            Den Objektpfad hinzufügen.

            const path = 'adapter.0.folder.'; // anpassen!
            
            function HiLo() {
              for (let i = 1; i <= 21; i++) {
                const kursId = path + `Kurs${i}`; // Namen Kurs1 - Kurs21 vergeben
                const lowId = path + `Low${i}`; // Namen Low1 - Low21 vergeben
                const highId = path + `High${i}`; // Namen High1 - High21 vergeben
            

            Wenn die Namen eindeutig im gesamten ioBroker sind, kann auch getIdByName(name) verwendet werden.

                const kursId = getIdByName(`Kurs${i}`); // Namen Kurs1 - Kurs21 vergeben
                const lowId = getIdByName(`Low${i}`); // Namen Low1 - Low21 vergeben
                const highId = getIdByName(`High${i}`); // Namen High1 - High21 vergeben
            
            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            886
            Online

            31.8k
            Users

            80.0k
            Topics

            1.3m
            Posts

            2
            4
            209
            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