Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

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

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    186

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

Blockly ganze Aufzählung prüfen

Scheduled Pinned Locked Moved Blockly
14 Posts 3 Posters 837 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    Timmss
    wrote on last edited by Timmss
    #1

    Hey liebe Community,

    ich habe einen 'FensterStatus[Raum]' Datenpunkt für jeden Raum, dieser ist false, wenn alle Fenster in den jeweiligen Raum geschlossen sind.

    Zusätzlich gibt es einen DP, der wiederum alle FensterStatus[Raum] Datenpunkte abprüft und ist false, wenn halt alle Fenster des Gebäudes geschlossen sind.

    Meine bisherige Lösung ist folgende:
    5bfc8253-a116-4bf5-b0d0-a7ae7d68bc30-grafik.png

    Diese möchte ich verfeinern mithilfe einer Aufzählung:
    b4fc0886-da4f-4887-a398-b819627bb527-grafik.png

    In dieser Aufzählung sind alle FensterStatus[Raum] Datenpunkte vorhanden und ich möchte in der Abfrage auf jeden Wert dieser Aufzählung prüfen.

    Hat jemand eine Idee?

    AsgothianA 1 Reply Last reply
    0
    • T Timmss

      Hey liebe Community,

      ich habe einen 'FensterStatus[Raum]' Datenpunkt für jeden Raum, dieser ist false, wenn alle Fenster in den jeweiligen Raum geschlossen sind.

      Zusätzlich gibt es einen DP, der wiederum alle FensterStatus[Raum] Datenpunkte abprüft und ist false, wenn halt alle Fenster des Gebäudes geschlossen sind.

      Meine bisherige Lösung ist folgende:
      5bfc8253-a116-4bf5-b0d0-a7ae7d68bc30-grafik.png

      Diese möchte ich verfeinern mithilfe einer Aufzählung:
      b4fc0886-da4f-4887-a398-b819627bb527-grafik.png

      In dieser Aufzählung sind alle FensterStatus[Raum] Datenpunkte vorhanden und ich möchte in der Abfrage auf jeden Wert dieser Aufzählung prüfen.

      Hat jemand eine Idee?

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      wrote on last edited by Asgothian
      #2

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

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      T 1 Reply Last reply
      1
      • 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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by 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 Replies Last reply
                  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
                    wrote on last edited by 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 Reply Last reply
                    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
                      wrote on last edited by
                      #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 Reply Last reply
                      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
                        wrote on last edited by 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 Reply Last reply
                        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
                          wrote on last edited by
                          #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 Reply Last reply
                          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
                            wrote on last edited by 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 Reply Last reply
                            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
                              wrote on last edited by
                              #14

                              @paul53

                              Versteh ich, vielen Dank! 🙌

                              1 Reply Last reply
                              0

                              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                              With your input, this post could be even better 💗

                              Register Login
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              289

                              Online

                              32.8k

                              Users

                              82.7k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Home
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe