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. [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    333

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

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

[Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt

Geplant Angeheftet Gesperrt Verschoben Blockly
blockly
23 Beiträge 4 Kommentatoren 2.9k 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.
  • C Offline
    C Offline
    care72
    schrieb am zuletzt editiert von care72
    #1

    Hallo zusammen,

    ich habe bei mir an der Terrassentür einen Tür/Fensterkontakt für Alarm etc. Jetzt möchte ich gern beim Öffnen der Tür das Licht auf der Terrrasse einschalten und nach dem zweiten betätigen der Tür wieder ausschalten.
    z.B. Tür wird geöffnet = Licht geht an
    Tür wieder zu= Licht bleibt an ( Gassi gehen , Holz holen usw.)( Zeit unterschiedlich deshalb kein Timer)
    Tür wieder geöffnet= Licht bleibt an
    Tür wieder zu= Licht geht aus.
    Wie kann man das lösen das quasi bei dreimaliger Stausänderung das Licht an bleibt und erst beim vierten Mal wieder ausgeht?? :upside_down_face: :thinking_face:
    Danke im Voraus!

    paul53P 1 Antwort Letzte Antwort
    0
    • C care72

      Hallo zusammen,

      ich habe bei mir an der Terrassentür einen Tür/Fensterkontakt für Alarm etc. Jetzt möchte ich gern beim Öffnen der Tür das Licht auf der Terrrasse einschalten und nach dem zweiten betätigen der Tür wieder ausschalten.
      z.B. Tür wird geöffnet = Licht geht an
      Tür wieder zu= Licht bleibt an ( Gassi gehen , Holz holen usw.)( Zeit unterschiedlich deshalb kein Timer)
      Tür wieder geöffnet= Licht bleibt an
      Tür wieder zu= Licht geht aus.
      Wie kann man das lösen das quasi bei dreimaliger Stausänderung das Licht an bleibt und erst beim vierten Mal wieder ausgeht?? :upside_down_face: :thinking_face:
      Danke im Voraus!

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

      @care72 sagte in Frage zu Blockly ?:

      Wie kann man das lösen das quasi bei dreimaliger Stausänderung das Licht an bleibt und erst beim vierten Mal wieder ausgeht??

      Besser formuliert: ...und erst beim 2. "Tür schließen" wieder ausgeht. Das kann man z.B. mit einer Variablen erreichen, die bei jedem "Tür schließen" negiert und für "Licht aus" abgefragt wird.

      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

      C 1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        mehrwiedu
        schrieb am zuletzt editiert von
        #3

        Vielleicht mit einem Zähler anstatt einem Timer.
        Jedoch weiß dieser ja nicht, ob und wann man das dritte Mal auch wieder reingeht.
        Kann mir vorstellen, dass mit dieser Lösung es öfter nötig sein wird, die Tür dann zweimal wieder auf und zu zumachen, damit das Licht nicht an bleibt, wenn man z. B. nur versehentlich die Tür aufgemacht hat.
        Aus der Praxis passiert mir das öfter als gedacht, wenn man so drüber nachdenkt. Tür auf, och Schlüssel vergessen, oder vielleicht doch erst selbst nochmal Pipi machen, jemand ruft einen zurück oder, oder, oder.

        Praktikabel fände ich eher einen Timer. Ansonsten einen Bewegungsmelder.

        C 1 Antwort Letzte Antwort
        0
        • M mehrwiedu

          Vielleicht mit einem Zähler anstatt einem Timer.
          Jedoch weiß dieser ja nicht, ob und wann man das dritte Mal auch wieder reingeht.
          Kann mir vorstellen, dass mit dieser Lösung es öfter nötig sein wird, die Tür dann zweimal wieder auf und zu zumachen, damit das Licht nicht an bleibt, wenn man z. B. nur versehentlich die Tür aufgemacht hat.
          Aus der Praxis passiert mir das öfter als gedacht, wenn man so drüber nachdenkt. Tür auf, och Schlüssel vergessen, oder vielleicht doch erst selbst nochmal Pipi machen, jemand ruft einen zurück oder, oder, oder.

          Praktikabel fände ich eher einen Timer. Ansonsten einen Bewegungsmelder.

          C Offline
          C Offline
          care72
          schrieb am zuletzt editiert von care72
          #4

          @mehrwiedu Natürlich wäre der Bewegungsmelder am einfachsten zu realisieren. War gestern Abend eine spontane Idee mit den Sachen die vorhanden sind. Einen Timer wollte ich halt nicht weil es ein Unterschied ist den Holzkorb aufzufüllen oder eine Stunde mit dem Hund zu gehen.

          1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @care72 sagte in Frage zu Blockly ?:

            Wie kann man das lösen das quasi bei dreimaliger Stausänderung das Licht an bleibt und erst beim vierten Mal wieder ausgeht??

            Besser formuliert: ...und erst beim 2. "Tür schließen" wieder ausgeht. Das kann man z.B. mit einer Variablen erreichen, die bei jedem "Tür schließen" negiert und für "Licht aus" abgefragt wird.

            C Offline
            C Offline
            care72
            schrieb am zuletzt editiert von
            #5

            @paul53 Ok. Das könnte ich einmal versuchen.

            paul53P 1 Antwort Letzte Antwort
            0
            • C care72

              @paul53 Ok. Das könnte ich einmal versuchen.

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

              @care72 Vorschlag:
              Blockly_Lichtaus_bei_2x_Tuerzu.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

              P 1 Antwort Letzte Antwort
              0
              • C Offline
                C Offline
                care72
                schrieb am zuletzt editiert von
                #7

                Danke! Ich werde es versuchen wobei ich ehrlich gesagt die Logik mit Wert und den Variablen noch nicht verstehe. Stehe mit Blockly erst am Anfang.:grimacing:

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @care72 sagte in Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                  die Logik mit Wert und den Variablen noch nicht verstehe.

                  draussen ist eine Variable. Wert ist eine Eigenschaft des Trigger-Datenpunktes (unter Blöcke Trigger), die den Wert des Datenpunktes enthält. Leider haben beide die gleiche Farbe.

                  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

                  1 Antwort Letzte Antwort
                  0
                  • C Offline
                    C Offline
                    care72
                    schrieb am zuletzt editiert von
                    #9

                    Danke paul53! :clap: Es funktioniert. Auch wenn ich es im Moment noch nicht so ganz verstehe.

                    1 Antwort Letzte Antwort
                    0
                    • M Offline
                      M Offline
                      mehrwiedu
                      schrieb am zuletzt editiert von
                      #10

                      Wenn ich das obere Blockly inhaltlich verstehe, dann glaube ich, bin ich ein ganzes Stückchen weiter in meiner Lernkurve.

                      Was genau wird da gemacht? Es wird abgefragt, ob der Türsensorwert sich geändert hat und anschließend wird egal welchen Wert er angenommen hat was gemacht? @paul53 kannst Du das mal aufdröseln? Ich würde wahnsinnig gerne weiter davon lernen, verstehe nur die Syntax überhaupt nicht und kann mir grad kein Bild im Kopf basteln, was er mit der VAriablen "draussen" macht und welchen Wert er ihr verpasst, bzw. wie das hinterher nach zweimaligem Tür auf/zu dazu führt, dass das Licht wieder ausgeht.

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • M mehrwiedu

                        Wenn ich das obere Blockly inhaltlich verstehe, dann glaube ich, bin ich ein ganzes Stückchen weiter in meiner Lernkurve.

                        Was genau wird da gemacht? Es wird abgefragt, ob der Türsensorwert sich geändert hat und anschließend wird egal welchen Wert er angenommen hat was gemacht? @paul53 kannst Du das mal aufdröseln? Ich würde wahnsinnig gerne weiter davon lernen, verstehe nur die Syntax überhaupt nicht und kann mir grad kein Bild im Kopf basteln, was er mit der VAriablen "draussen" macht und welchen Wert er ihr verpasst, bzw. wie das hinterher nach zweimaligem Tür auf/zu dazu führt, dass das Licht wieder ausgeht.

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

                        @mehrwiedu
                        Bei Skriptstart wird die Variable draussen deklariert und ist erst einmal undefined.

                        falls Wert prüft, ob die Tür offen (true) ist. Wenn ja, wird das Licht eingeschaltet.
                        sonst bedeutet: Die Tür wird geschlossen (Wert = false).

                        falls draussen prüft, ob die Variable draussen wahr (true) ist. Wenn ja, wird das Licht ausgeschaltet.
                        Anschließend wird die Variable draussen negiert (false/undefined --> true, true --> false).

                        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

                        M 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @mehrwiedu
                          Bei Skriptstart wird die Variable draussen deklariert und ist erst einmal undefined.

                          falls Wert prüft, ob die Tür offen (true) ist. Wenn ja, wird das Licht eingeschaltet.
                          sonst bedeutet: Die Tür wird geschlossen (Wert = false).

                          falls draussen prüft, ob die Variable draussen wahr (true) ist. Wenn ja, wird das Licht ausgeschaltet.
                          Anschließend wird die Variable draussen negiert (false/undefined --> true, true --> false).

                          M Offline
                          M Offline
                          mehrwiedu
                          schrieb am zuletzt editiert von mehrwiedu
                          #12

                          @paul53 sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                          @mehrwiedu
                          Bei Skriptstart wird die Variable draussen deklariert und ist erst einmal undefined.

                          falls Wert prüft, ob die Tür offen (true) ist. Wenn ja, wird das Licht eingeschaltet.
                          sonst bedeutet: Die Tür wird geschlossen (Wert = false).

                          falls draussen prüft, ob die Variable draussen wahr (true) ist. Wenn ja, wird das Licht ausgeschaltet.
                          Anschließend wird die Variable draussen negiert (false/undefined --> true, true --> false).

                          Danke für die Antwort. Nach Deiner Erklärung weiß ich was das Skript macht, aber verstanden habe ich das leider immer noch nicht wann das dort geschieht.
                          Läuft das Blockly genauso in dieser Syntax wie oben gezeigt? Wird also der Wert vom Objekt nicht geprüft mit "falls wert von Object ID = wahr" ?

                          Dann verstehe ich nämlich nicht, wo die Variable definiert wird und wann sie auf true gesetzt wird.
                          Das ist jetzt aber auch meinem fehlenden Wissen über das Skripten geschuldet. Kann natürlich sein, dass eine Variable automatisch den Wert eines Trigger Objektes annimmt, was ich halt nicht weiß.

                          So wie ich das da oben verstehe (und ich glaube, ich verstehe es falsch) prüft das Skript, ob der Wert vom Türsensor geändert wurde. Wenn er das wurde, wird mit "falls Wert" geschaut, ob es ein Wert ist, es wird ja nicht nach true oder false geprüft.
                          Aber das Objekt bekommt true und das ist ein Wert und somit wird die Lampe angeschaltet.
                          Jetzt macht man die Tür wieder zu und das Objekt wird wieder geändert und erhält false, was auch ein Wert ist und somit bleibt die Lampe an.

                          Wann bekommt denn die Variable ihren Wert und woher? Irgendwann muss die doch auch auf true gesetzt werden, bzw. wenn nur das Vorhandensein einer Variablen geprüft wird, ist die doch bereits beim ersten Tür auf schon da und würde dann beim ersten Tür zu doch schon wieder durch "setze draussen auf - nicht - draussen" gelöscht, oder?

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #13

                            @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                            prüft das Skript, ob der Wert vom Türsensor geändert wurde. Wenn er das wurde, wird mit "falls Wert" geschaut, ob es ein Wert ist,

                            Nein, mit "falls Wert" wird geprüft, ob der Wert true ist.
                            Javascript: if(obj.state.val)

                            EDIT: Siehe Compare-Table, Reiter if().

                            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

                            M 1 Antwort Letzte Antwort
                            0
                            • M mehrwiedu

                              @paul53 sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                              @mehrwiedu
                              Bei Skriptstart wird die Variable draussen deklariert und ist erst einmal undefined.

                              falls Wert prüft, ob die Tür offen (true) ist. Wenn ja, wird das Licht eingeschaltet.
                              sonst bedeutet: Die Tür wird geschlossen (Wert = false).

                              falls draussen prüft, ob die Variable draussen wahr (true) ist. Wenn ja, wird das Licht ausgeschaltet.
                              Anschließend wird die Variable draussen negiert (false/undefined --> true, true --> false).

                              Danke für die Antwort. Nach Deiner Erklärung weiß ich was das Skript macht, aber verstanden habe ich das leider immer noch nicht wann das dort geschieht.
                              Läuft das Blockly genauso in dieser Syntax wie oben gezeigt? Wird also der Wert vom Objekt nicht geprüft mit "falls wert von Object ID = wahr" ?

                              Dann verstehe ich nämlich nicht, wo die Variable definiert wird und wann sie auf true gesetzt wird.
                              Das ist jetzt aber auch meinem fehlenden Wissen über das Skripten geschuldet. Kann natürlich sein, dass eine Variable automatisch den Wert eines Trigger Objektes annimmt, was ich halt nicht weiß.

                              So wie ich das da oben verstehe (und ich glaube, ich verstehe es falsch) prüft das Skript, ob der Wert vom Türsensor geändert wurde. Wenn er das wurde, wird mit "falls Wert" geschaut, ob es ein Wert ist, es wird ja nicht nach true oder false geprüft.
                              Aber das Objekt bekommt true und das ist ein Wert und somit wird die Lampe angeschaltet.
                              Jetzt macht man die Tür wieder zu und das Objekt wird wieder geändert und erhält false, was auch ein Wert ist und somit bleibt die Lampe an.

                              Wann bekommt denn die Variable ihren Wert und woher? Irgendwann muss die doch auch auf true gesetzt werden, bzw. wenn nur das Vorhandensein einer Variablen geprüft wird, ist die doch bereits beim ersten Tür auf schon da und würde dann beim ersten Tür zu doch schon wieder durch "setze draussen auf - nicht - draussen" gelöscht, oder?

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

                              @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                              Wann bekommt denn die Variable ihren Wert und woher? Irgendwann muss die doch auch auf true gesetzt werden, bzw. wenn nur das Vorhandensein einer Variablen geprüft wird, ist die doch bereits beim ersten Tür auf schon da und würde dann beim ersten Tür zu doch schon wieder durch "setze draussen auf - nicht - draussen" gelöscht, oder?

                              Beim Skriptstart bekommt die Variable draussen den Wert undefined. Beim ersten Schließen der Tür erhält sie den Wert true; beim zweiten Schließen erhält sie den Wert false, beim dritten Schließen wieder true ...

                              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

                              1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                prüft das Skript, ob der Wert vom Türsensor geändert wurde. Wenn er das wurde, wird mit "falls Wert" geschaut, ob es ein Wert ist,

                                Nein, mit "falls Wert" wird geprüft, ob der Wert true ist.
                                Javascript: if(obj.state.val)

                                EDIT: Siehe Compare-Table, Reiter if().

                                M Offline
                                M Offline
                                mehrwiedu
                                schrieb am zuletzt editiert von
                                #15

                                @paul53 sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                prüft das Skript, ob der Wert vom Türsensor geändert wurde. Wenn er das wurde, wird mit "falls Wert" geschaut, ob es ein Wert ist,

                                Nein, mit "falls Wert" wird geprüft, ob der Wert true ist.
                                Javascript: if(obj.state.val)

                                Sei nachsichtig mit mir. ;) Ich habe ein Haufen von Dokus zu Blockly und Skripten in meinen Favoriten, bin aber als Autodidakt nicht sehr konsequent damit. :)

                                Also ist die Syntax für den Block Wert, der auf die ObjektID des Triggers abzielt, automatisch die Prüfung nach "true" und eine Sonst-Bedingung wird nicht benötigt?
                                Heißt dann übersetzt
                                Wenn die ObjectID von Türsensor geändert wurde, prüfe ob der Wert = true ist und schalte dann das Licht an.

                                Im Ausgangsstatus vom Türsensor steht bei geschlossener Tür ja false.
                                Jetzt mache ich die Tür auf, der Trigger erkennt eine Änderung und prüft ob true, schaltet dann das licht an.
                                Beim schließen der Tür erkennt er wieder eine Änderungen, prüft ob true und erhält false.

                                Was passiert dann? Dann sollte er doch in die Sonst Bedingung gehen und die Variable "draussen" auf true prüfen, die noch keinen Wert hat, weil undefined. Also lässt er deshalb das Licht an und die Variable existent.

                                Wenn jetzt die Tür zum zweiten Mal geöffnet wird, ändert sich ja wieder der Wert vom Türsensor auf true und das Licht bleibt an. Wird jetzt erst das true in die Variable geschrieben? Muss ja, denn beim zweiten Schließen der Tür erhält der Wert false und es müsste in die Sonst Bedingung gehen und hier existiert die Variable und hat den Wert true, so dass das Licht ausgeschaltet wird und die Variable gelöscht wird.

                                Und dann fängt das Spielchen wieder von vorn an, richtig?

                                Wenn das wirklich so sein sollte, dann bin ich noch weit weg vom Syntaxverständnis. :)

                                paul53P 1 Antwort Letzte Antwort
                                0
                                • M mehrwiedu

                                  @paul53 sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                  @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                  prüft das Skript, ob der Wert vom Türsensor geändert wurde. Wenn er das wurde, wird mit "falls Wert" geschaut, ob es ein Wert ist,

                                  Nein, mit "falls Wert" wird geprüft, ob der Wert true ist.
                                  Javascript: if(obj.state.val)

                                  Sei nachsichtig mit mir. ;) Ich habe ein Haufen von Dokus zu Blockly und Skripten in meinen Favoriten, bin aber als Autodidakt nicht sehr konsequent damit. :)

                                  Also ist die Syntax für den Block Wert, der auf die ObjektID des Triggers abzielt, automatisch die Prüfung nach "true" und eine Sonst-Bedingung wird nicht benötigt?
                                  Heißt dann übersetzt
                                  Wenn die ObjectID von Türsensor geändert wurde, prüfe ob der Wert = true ist und schalte dann das Licht an.

                                  Im Ausgangsstatus vom Türsensor steht bei geschlossener Tür ja false.
                                  Jetzt mache ich die Tür auf, der Trigger erkennt eine Änderung und prüft ob true, schaltet dann das licht an.
                                  Beim schließen der Tür erkennt er wieder eine Änderungen, prüft ob true und erhält false.

                                  Was passiert dann? Dann sollte er doch in die Sonst Bedingung gehen und die Variable "draussen" auf true prüfen, die noch keinen Wert hat, weil undefined. Also lässt er deshalb das Licht an und die Variable existent.

                                  Wenn jetzt die Tür zum zweiten Mal geöffnet wird, ändert sich ja wieder der Wert vom Türsensor auf true und das Licht bleibt an. Wird jetzt erst das true in die Variable geschrieben? Muss ja, denn beim zweiten Schließen der Tür erhält der Wert false und es müsste in die Sonst Bedingung gehen und hier existiert die Variable und hat den Wert true, so dass das Licht ausgeschaltet wird und die Variable gelöscht wird.

                                  Und dann fängt das Spielchen wieder von vorn an, richtig?

                                  Wenn das wirklich so sein sollte, dann bin ich noch weit weg vom Syntaxverständnis. :)

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

                                  @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                  Beim schließen der Tür erkennt er wieder eine Änderungen, prüft ob true und erhält false.
                                  Was passiert dann? Dann sollte er doch in die Sonst Bedingung gehen

                                  Genau das bedeutet sonst: Wenn die Prüfung false ergibt, wird nicht der mache-Zweig, sondern der sonst-Zweig ausgeführt.

                                  @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                  die Variable "draussen" auf true prüfen, die noch keinen Wert hat, weil undefined. Also lässt er deshalb das Licht an

                                  Richtig.

                                  @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                  und die Variable existent.

                                  Nein, die Variable wird auf true gesetzt, denn die Negierung erfolgt unabhängig von der Prüfung if(draussen).

                                  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

                                  1 Antwort Letzte Antwort
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von paul53
                                    #17

                                    Das Blockly als kommentiertes Javascript:

                                    var draussen; // Deklaration, Wert ist undefined
                                    on(idTuer, function(dp) { // triggert bei Wertänderung
                                       if(dp.state.val) setState(idLicht, true); // Tür öffnet (true)
                                       else { // Tür schließt
                                          if(draussen) setState(idLicht, false); // Licht aus, wenn draussen = true
                                          draussen = !draussen; // false/undefined --> true, true --> false
                                       }
                                    });
                                    

                                    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

                                    1 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      mehrwiedu
                                      schrieb am zuletzt editiert von mehrwiedu
                                      #18

                                      Puhhh. Das wird eine schwierige Geburt. Ich hab da einen Knoten im Kopf. Sorry und danke für Deine Geduld.

                                      Ich raffe es einfach noch nicht, welchen Einfluss das erneute Öffnen der Tür für einen Einfluss auf die Variable hat und woher sie das true bekommt.
                                      Skriptstart heißt doch 1. Mal Tür auf, Türsensor = true, Licht = an, Variable wird angelegt mit undefined.
                                      Erstes Mal Schließen, Türsensor = false, false ist keine Bedingung, also bleibt das Licht an, Variable = true (aber woher kriegt sie das? Gibt das schlicht der Block vor? Du setzt sie ja nicht explizit) Aber gut, Variable war beim ersten Schließen noch undefined, deshalb wird die Sonst Bedingung nicht ausgeführt.
                                      Zweites Mal Öffnen der Tür, Türsensor = true, Licht bleibt an, und somit lauft er auch nicht in die Sonst-Bedingung, setzt die Variable aber auf false.
                                      Zweites Mal Schließen der Tür, Türsensor = false, Variable = true, Skript läuft in die Sonst-Bedingung und findet Variable = true und schaltet Licht aus und löscht sie.

                                      Erneutes Öffnen der Tür = Skriptstart usw.... Das habe ich jetzt verstanden. Bleibt nur meine Ungewissheit, ob Blockly beim Durchlaufen von Variablen von sich aus die Werte der Reihe nach durchreicht um eben beim 1. Schließen und 2. Öffnen true und false zu erhalten, damit sie beim 2. Schließen, also der insgesamt 4. Statusänderung vom Türsensor wieder auf true landet.

                                      1 Antwort Letzte Antwort
                                      0
                                      • paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von paul53
                                        #19

                                        @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                        Skriptstart heißt doch 1. Mal Tür auf, Türsensor = true, Licht = an, Variable wird angelegt mit undefined.

                                        Nein, beim Skriptstart passiert noch gar nichts, sondern es wird nur das Skript compiliert, Variable angelegt mit undefined und dann auf den Tür-Trigger gewartet.

                                        @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                        1. Mal Tür auf, Türsensor = true, Licht = an

                                        Richtig. Danach

                                          1. Tür zu: draussen = undefined --> draussen = true
                                          1. Tür auf: Licht (bleibt) ein
                                          1. Tür zu: Licht aus, weil draussen = true, danach draussen = true --> draussen = false

                                        Weiter mit Variable draussen:

                                          1. Tür zu: true
                                          1. Tür zu: false
                                          1. Tür zu: true

                                        usw.
                                        Kurz ausgedrückt: Beim Tür schließen wird jedes Mal die Variable draussen negiert und nur jedes zweite Mal das Licht ausgeschaltet.

                                        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

                                        M 1 Antwort Letzte Antwort
                                        0
                                        • paul53P paul53

                                          @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                          Skriptstart heißt doch 1. Mal Tür auf, Türsensor = true, Licht = an, Variable wird angelegt mit undefined.

                                          Nein, beim Skriptstart passiert noch gar nichts, sondern es wird nur das Skript compiliert, Variable angelegt mit undefined und dann auf den Tür-Trigger gewartet.

                                          @mehrwiedu sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                          1. Mal Tür auf, Türsensor = true, Licht = an

                                          Richtig. Danach

                                            1. Tür zu: draussen = undefined --> draussen = true
                                            1. Tür auf: Licht (bleibt) ein
                                            1. Tür zu: Licht aus, weil draussen = true, danach draussen = true --> draussen = false

                                          Weiter mit Variable draussen:

                                            1. Tür zu: true
                                            1. Tür zu: false
                                            1. Tür zu: true

                                          usw.
                                          Kurz ausgedrückt: Beim Tür schließen wird jedes Mal die Variable draussen negiert und nur jedes zweite Mal das Licht ausgeschaltet.

                                          M Offline
                                          M Offline
                                          mehrwiedu
                                          schrieb am zuletzt editiert von mehrwiedu
                                          #20

                                          @paul53 sagte in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt:

                                          Kurz ausgedrückt: Beim Tür schließen wird jedes Mal die Variable draussen negiert....

                                          Ahhh, jetzt dämmert es langsam.
                                          Das macht der Teil: setze draussen auf - nicht - draussen. Der schreibt jedesmal ein false in die Variable wenn Tür auch false hat.
                                          Und zwar so lange, bis in der Konstellation irgendwann mal ein true gleichzeitig mit Tür = false steht bei Änderungen am Objekt. Dann wird zusätzlich das Licht ausgeschaltet.

                                          Ich habe das "setze draussen" nie unabhängig von "steuere" betrachtet. Aber logisch, die Sonst Bedingung bei Tür = false wird ja immer ausgeführt und demnach auch immer die Variable mit false gesetzt, auch wenn sie bereits ein false hat. Jetzt ergibt das auch für mich Sinn.
                                          Lerneffekt daraus für mich ist aber dann die Syntax. Ich wusste nicht, dass false so gesetzt werden kann. Wahrscheinlich hätte ich es mit "setze draussen auf - (Wert) false" probiert.

                                          Was mir allerdings noch nicht klar ist, woher der true Wert für draussen kommt. Das verstehe ich noch nicht. Liegt das in der Eigenschaft der Variablen, dass sie quasi bei jedem Durchlauf des Skripts ein true verpasst bekommt, nach dem Motto - Vorhanden? Ja!, also true, oder woher nimmt sie den Wert?

                                          paul53P 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

                                          633

                                          Online

                                          32.7k

                                          Benutzer

                                          82.5k

                                          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