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. Blockly
  5. Blockly ganze Aufzählung prüfen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Blockly ganze Aufzählung prüfen

Geplant Angeheftet Gesperrt Verschoben Blockly
14 Beiträge 3 Kommentatoren 807 Aufrufe 2 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.
  • AsgothianA Asgothian

    @timmss

    Unter schleifen findest Du den Block Screenshot 2024-06-24 at 11.11.24.png

    Wenn du da auch den gleichen Selektor andockst kannst du innerhalb der Schleife jeden einzelnen Datenpunkt abfragen.

    A.

    Der Ansatz hat den Nachteil das immer wenn sich ein beliebiger Status ändert alle Stati abgefragt werden. Das ist eigentlich unnötig. Dafür gibt es eine (in meinen Augen elegantere) Lösung:

    Screenshot 2024-06-24 at 11.29.37.png

    Hintergrund ist das in einer Liste die ID's der states mit Status "wahr" (geht auch mit status falsch, wenn gewünscht) gespeichert wird. Über die Anzahl der in der Liste vorhandenen Stati kann dann die Aktion ausgeführt werden. Der "For each" Block am Anfang dient zur Initialisierung der Liste bei Skriptstart. Danach wird bei jeder Statusanpassung eines einzelnen States immer nur mit dem einzelnen State gearbeitet, die anderen werden nicht noch einmal abgefragt.

    A.

    T Offline
    T Offline
    Timmss
    schrieb am zuletzt editiert von
    #3

    @asgothian

    Das klingt erstmal super!

    Also praktisch so:
    3bc7a86a-8c43-4bc2-956f-4b2f81f677cd-grafik.png

    Wobei mir dann die Frage aufkommt, wie schnell prüft diese Schleife ab? Weil angenommen der erste Wert der Liste ist falsch, dann wird der DP auf falsch gesetzt. Wenn jetzt aber der letzte Wert der Liste wahr ist, dann war der DP fälschlicherweise für eine gewisse Zeit auf false.

    paul53P 1 Antwort Letzte Antwort
    0
    • T Timmss

      @asgothian

      Das klingt erstmal super!

      Also praktisch so:
      3bc7a86a-8c43-4bc2-956f-4b2f81f677cd-grafik.png

      Wobei mir dann die Frage aufkommt, wie schnell prüft diese Schleife ab? Weil angenommen der erste Wert der Liste ist falsch, dann wird der DP auf falsch gesetzt. Wenn jetzt aber der letzte Wert der Liste wahr ist, dann war der DP fälschlicherweise für eine gewisse Zeit auf false.

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

      @timmss sagte: Also praktisch so:

      Nein, so:

      Blockly_alleFenster.JPG

      In der ID ist "enum.functions.FensterStatusFirma" genau so geschrieben?

      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

      T 1 Antwort Letzte Antwort
      2
      • paul53P paul53

        @timmss sagte: Also praktisch so:

        Nein, so:

        Blockly_alleFenster.JPG

        In der ID ist "enum.functions.FensterStatusFirma" genau so geschrieben?

        T Offline
        T Offline
        Timmss
        schrieb am zuletzt editiert von
        #5

        @paul53

        Das macht mehr Sinn ja ;)

        Ja, die ID heißt genauso.

        Eine Frage noch zum Verständnis, in JavaScript ist es besser nicht auf true zu prüfen, deswegen auch das Weglassen von dem Vergleich = wahr?

        paul53P 1 Antwort Letzte Antwort
        0
        • T Timmss

          @paul53

          Das macht mehr Sinn ja ;)

          Ja, die ID heißt genauso.

          Eine Frage noch zum Verständnis, in JavaScript ist es besser nicht auf true zu prüfen, deswegen auch das Weglassen von dem Vergleich = wahr?

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

          @timmss sagte: Weglassen von dem Vergleich = wahr?

          Das Ergebnis eines jeden Vergleichs ist true oder false. Deshalb ist ein Vergleich mit wahr sinnlos.

          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

          T 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @timmss sagte: Weglassen von dem Vergleich = wahr?

            Das Ergebnis eines jeden Vergleichs ist true oder false. Deshalb ist ein Vergleich mit wahr sinnlos.

            T Offline
            T Offline
            Timmss
            schrieb am zuletzt editiert von
            #7

            Dann wäre da noch eine Sache in dem Raum-Skript. Hier wird jedes Fenster und die Tür geprüft und es gibt folgende 3 Anwendungsfälle:

            1. Fenster zu und Tür zu
            2. Fenster zu und Tür auf
            3. Fenster auf

            Bisher sieht meine damalige Erstlösung so aus:
            8bd6246f-f5f4-4f6b-a38c-6da89a6d0a4d-grafik.png

            Ich denke hier kann man viel mit privaten Variablen arbeiten und auch die letzte Bedigung kann durch ein einfaches sonst ersetzt werden.

            Wie würdet ihr das lösen?

            paul53P 1 Antwort Letzte Antwort
            0
            • T Timmss

              Dann wäre da noch eine Sache in dem Raum-Skript. Hier wird jedes Fenster und die Tür geprüft und es gibt folgende 3 Anwendungsfälle:

              1. Fenster zu und Tür zu
              2. Fenster zu und Tür auf
              3. Fenster auf

              Bisher sieht meine damalige Erstlösung so aus:
              8bd6246f-f5f4-4f6b-a38c-6da89a6d0a4d-grafik.png

              Ich denke hier kann man viel mit privaten Variablen arbeiten und auch die letzte Bedigung kann durch ein einfaches sonst ersetzt werden.

              Wie würdet ihr das lösen?

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

              @timmss sagte: Wie würdet ihr das lösen?

              Z.B. so:

              Blockly_temp.JPG

              3 Anwendungsfälle:

              1. Fenster zu und Tür zu
              2. Fenster zu und Tür auf
              3. Fenster auf

              Bei nur 4 Fenstern kann man an Stelle der Schleife auch eine Oder-Verknüpfung der Werte verwenden.

              Blockly_temp.JPG

              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

              T 2 Antworten Letzte Antwort
              1
              • paul53P paul53

                @timmss sagte: Wie würdet ihr das lösen?

                Z.B. so:

                Blockly_temp.JPG

                3 Anwendungsfälle:

                1. Fenster zu und Tür zu
                2. Fenster zu und Tür auf
                3. Fenster auf

                Bei nur 4 Fenstern kann man an Stelle der Schleife auch eine Oder-Verknüpfung der Werte verwenden.

                Blockly_temp.JPG

                T Offline
                T Offline
                Timmss
                schrieb am zuletzt editiert von Timmss
                #9

                @paul53

                Vielen Dank für den Lösungsvorschlag!
                Ich hätte vorher vielleicht meine Variablen näher erklären sollen:

                1. Fenster zu und Tür zu sollen FensterStatus auf false setzen und KontaktAuf auf false setzen
                2. Fenster zu und Tür auf sollen FensterStatus auf false setzen und KontaktAuf auf true setzen
                3. Fenster auf sollen FensterStatus auf true setzen und KontaktAuf auf true setzen

                Da wäre ein Problem mit dem zweiten Trigger Block, denn hier können die Fenster den Trigger nicht triggern.

                Ich habe es so gebaut:
                05483c43-524f-4c26-8578-390073b55024-grafik.png

                Und es funktioniert eigentlich, jedoch bekomme ich warn debug outputs :(

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @timmss sagte: Wie würdet ihr das lösen?

                  Z.B. so:

                  Blockly_temp.JPG

                  3 Anwendungsfälle:

                  1. Fenster zu und Tür zu
                  2. Fenster zu und Tür auf
                  3. Fenster auf

                  Bei nur 4 Fenstern kann man an Stelle der Schleife auch eine Oder-Verknüpfung der Werte verwenden.

                  Blockly_temp.JPG

                  T Offline
                  T Offline
                  Timmss
                  schrieb am zuletzt editiert von
                  #10

                  @paul53

                  Nachtrag:

                  Ich habe jetzt eine perfekt funktionierende Lösung:
                  7739efcd-ffb4-4fe0-b223-16398175c36d-grafik.png

                  Der Fehler mit den gelben warn-debugs kam davon, dass die States von Homematic-IP Sensoren vom Typ number sind.
                  Ich musste diese also im Skript konvertieren zu Logikwerten, um diese dann den Boolean-Variablen zu übergeben.

                  Danke für eure Lösungen!

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • T Timmss

                    @paul53

                    Nachtrag:

                    Ich habe jetzt eine perfekt funktionierende Lösung:
                    7739efcd-ffb4-4fe0-b223-16398175c36d-grafik.png

                    Der Fehler mit den gelben warn-debugs kam davon, dass die States von Homematic-IP Sensoren vom Typ number sind.
                    Ich musste diese also im Skript konvertieren zu Logikwerten, um diese dann den Boolean-Variablen zu übergeben.

                    Danke für eure Lösungen!

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

                    @timmss sagte: eine perfekt funktionierende Lösung

                    Die Lösung funktioniert nur manchmal, da "steuere FensterStatusEntwicklung" asynchron ausgeführt wird und meist noch nicht fertig ist, wenn der DP gleich wieder eingelesen wird. Verwende besser eine Variable:

                    Blockly_temp.JPG

                    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

                    T 1 Antwort Letzte Antwort
                    1
                    • paul53P paul53

                      @timmss sagte: eine perfekt funktionierende Lösung

                      Die Lösung funktioniert nur manchmal, da "steuere FensterStatusEntwicklung" asynchron ausgeführt wird und meist noch nicht fertig ist, wenn der DP gleich wieder eingelesen wird. Verwende besser eine Variable:

                      Blockly_temp.JPG

                      T Offline
                      T Offline
                      Timmss
                      schrieb am zuletzt editiert von
                      #12

                      @paul53

                      Macht Sinn ja.

                      Würde hier nicht auch 'aktualisiere' besser sein statt 'steuere', da FensterStatusEntwicklung ein eigener Datenpunkt ist und kein Aktor?

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • T Timmss

                        @paul53

                        Macht Sinn ja.

                        Würde hier nicht auch 'aktualisiere' besser sein statt 'steuere', da FensterStatusEntwicklung ein eigener Datenpunkt ist und kein Aktor?

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

                        @timmss sagte: 'aktualisiere' besser sein statt 'steuere', da FensterStatusEntwicklung ein eigener Datenpunkt ist

                        Ja, bei eigenen Datenpunkten nimmt man "aktualisiere".

                        EDIT: Es hätte sein können, dass es sich um SV der CCU handelt. Dann müsste man "steuere" verwenden.

                        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

                        T 1 Antwort Letzte Antwort
                        1
                        • paul53P paul53

                          @timmss sagte: 'aktualisiere' besser sein statt 'steuere', da FensterStatusEntwicklung ein eigener Datenpunkt ist

                          Ja, bei eigenen Datenpunkten nimmt man "aktualisiere".

                          EDIT: Es hätte sein können, dass es sich um SV der CCU handelt. Dann müsste man "steuere" verwenden.

                          T Offline
                          T Offline
                          Timmss
                          schrieb am zuletzt editiert von
                          #14

                          @paul53

                          Versteh ich, vielen Dank! :raised_hands:

                          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

                          535

                          Online

                          32.7k

                          Benutzer

                          82.4k

                          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