Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Garagentor mit 2 Sensoren

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Garagentor mit 2 Sensoren

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

      Hallo liebe Community

      Ich sammle gerade meine ersten Erfahrungen mit Blockly und komme nicht so schlecht voran 🙂
      Leider fehlt mir bei meinem Projekt etwas Hilfe.

      Zu meinem Projekt.:
      Ich habe ein Garagentor von Normstahl, dass mit der Magic Zusatzkarte bestückt wird.
      Diese Zusatzkarte gibt mir über 2 Relais bekannt ob das Tor Auf oder Zu ist.
      Diese wiederum habe ich über KNX mit einem Potentialfreien Interface eingebunden. Der Status wird auch in meiner Gira App oder in den Objekten unter iobroker richtig angezeigt.
      Die beiden Relais habe ich Garagentor_Status_offen und Garagentor_Status_zu benannt.

      In den Objekten habe ich mi ein Currentdoorstate und Targetdoorstate für Yahka angelegt.

      Mit meinem aktuellen Blockly setting kann ich das Tor schon fahren, leider funktioniert die Erkennung der Position noch nicht wirklich -> eigentlich gar nicht.

      Anbei mein Blockly für ein besseres Verständnis!
      Vielleicht hat ja wer ein gleiches Projekt mit 2 Sensoren und kann mir etwas unter die Arme greifen.

      lg und Danke

      Blockly.JPG

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

        @graydens
        "wiederhole solange" erzeugt eine Endlosschleife. Ganz schnell weg damit !

        @graydens said in Garagentor mit 2 Sensoren:

        In den Objekten habe ich mi ein Currentdoorstate und Targetdoorstate für Yahka angelegt.

        Müsste Currentdoorstate nicht 3 Zustände haben? geschlossen / offen / in Bewegung

        Du benötigst 3 Trigger:

        • Targetdoorstate
        • Status zu
        • Status offen

        Vorschlag für Currentdoorstate:

        Bild_2021-01-17_172342.png

        Wert findet man unter "Trigger".

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

          @paul53 Vielen Dank für deine Antwort

          Habe versucht deinen Entwurf zu nutzen.
          Leider funktioniert es nicht.

          Der Current status ist in den Objekten entweder 0 oder false.
          Anbei habe ich mein aktuelles eingefügt.

          Sobald in dem Ablauf Tor kommt, springt er rüber und durchläuft die Tor Aufgabe?
          Setze XXX auf Wert, was macht er da?

          lg und Danke

          1.JPG

          2.JPG

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

            @graydens
            Der zweite Trigger muss "Garage_Garagentor_Status_zu" und der dritte Trigger muss "Garage_Garagentor_Status_offen" sein.

            Alternative zu Multistate(0, 1, 2):

            Bild_2021-01-20_212146.png

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

              @paul53
              Current ändert sich leider nicht, bleibt auf false stehen..................target ändert sich je nach Tastendruck in der App

              4.JPG

              3.JPG

              paul53 2 Replies Last reply Reply Quote 0
              • paul53
                paul53 @Graydens last edited by paul53

                @graydens sagte: Current ändert sich leider nicht, bleibt auf false stehen

                Ändere den Datenpunkttyp von "Logikwert" in "Zahl".

                EDIT: Überschreibe die common-Eigenschaften mit:

                  "common": {
                    "name": "Currentdoorstate",
                    "role": "value",
                    "type": "number",
                    "desc": "Manuell erzeugt",
                    "states": {
                      "0": "geschlossen",
                      "1": "offen",
                      "2": "gekippt / in Bewegung"
                    },
                    "min": 0,
                    "max": 2,
                    "def": 0,
                    "read": true,
                    "write": false
                  },
                
                G 1 Reply Last reply Reply Quote 0
                • G
                  Graydens @paul53 last edited by

                  @paul53

                  Sieht nun schon viel besser aus.

                  Folgendes ist mir aufgefallen, was ich aber auch durch abändern noch nicht hinbekommen habe.

                  wenn ich es richtig beobachte ist:
                  Targetdoorstate geöffnet = (laut APP 0)
                  Targetdoorstate zu = (laut APP 1)

                  Aktuell funktioniert Targetdoorstate 0 mit currentdoorstate 0, ändert man Targetdoorstate auf 1 ändert sich currentdoorstate auf 2, bleibt aber solange bis man targetdoorstate wieder auf 0 setzt, dann ändert sich auch wieder current auf 0.

                  Somit zeigt mein Status aktuell im Bestfall an, dass das Tor offen ist obwohl es in Wirklichkeit zu ist.

                  Hoffe ich habe es einigermaßen logisch erklärt 😖

                  1_Neu.JPG

                  2_Neu.JPG

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

                    @graydens
                    Weshalb hat "offen" den Wert 0 bei "Currentdoorstate" ?

                    Was "Targetdoorstate" betrifft: Das habe ich aus Deinem ursprünglichen Blockly übernommen, dass aus jeder Wertänderung ein 1-s-Impuls wird. Weshalb ist der DP vom Typ "Zahl" mit der Rolle "value" ? Sollte es nicht besser ein Typ "boolean" sein mit der Rolle "switch" oder "button" ?
                    Oder man verwendet besser gleich den Datenpunkt "Auf/Zu/Stop_Schalten" als Button:

                    Bild_2021-01-21_115005.png

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

                      @graydens
                      Hier hast Du offenbar was vertauscht.

                      Bild_2021-01-21_121351.png

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

                        @paul53

                        Ohh ja danke, hatte ich gestern schon bemerkt und geändert.

                        Puhhhh wirklich nicht leicht für mich als Neuling das Projekt umzusetzen.
                        Value habe ich jetzt bei current auf boolean umgeändert, geht aber leider trotzdem nicht.

                        1.JPG

                        Der Impuls (1Sekunde) ist ja nur ein virtueller Taster den ich ja auch physisch in der Garage habe. Dieser macht ja nix anderes wie einen Eingang bei der Steuerung kurzzeitig kurz zu schließen und das Tor zu öffnen/stoppen/schließen.
                        Somit sollte auch eine andere Ansteuerung wie zb mit dem Tortaster oder der Gira App zu der Homekit App möglich sein.

                        Die Homekit ist halt praktischer da sie am iphone gleich direkt im Sofortzugriff zum belegen ist.

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

                          @graydens sagte: Value habe ich jetzt bei current auf boolean umgeändert, geht aber leider trotzdem nicht.

                          ?? Welchen Datenpunkt hast Du wie geändert ?
                          Poste bitte die RAW-Ansicht der Eigenschaften von "Currentdoorstate" und "Targetdoorstate" in Code tags.

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

                            @paul53

                            so richtig?

                            {
                              "from": "system.adapter.admin.0",
                              "user": "system.user.admin",
                              "ts": 1610818991491,
                              "common": {
                                "name": "Currentdoorstate",
                                "role": "boolean",
                                "type": "number",
                                "desc": "Manuell erzeugt",
                                "states": {
                                  "0": "Offen",
                                  "1": "Geschlossen",
                                  "2": "Offen/Bewegung"
                                },
                                "min": 0,
                                "max": 2,
                                "def": 0,
                                "read": true,
                                "write": false
                              },
                              "native": {},
                              "acl": {
                                "object": 1636,
                                "owner": "system.user.admin",
                                "ownerGroup": "system.group.administrator",
                                "state": 1636
                              },
                              "_id": "0_userdata.0.Currentdoorstate",
                              "type": "state"
                            }
                            
                            
                            {
                              "from": "system.adapter.admin.0",
                              "user": "system.user.admin",
                              "ts": 1610819016433,
                              "common": {
                                "name": "Targetdoorstate",
                                "role": "value",
                                "type": "number",
                                "desc": "Manuell erzeugt",
                                "read": true,
                                "write": true,
                                "def": false
                              },
                              "native": {},
                              "acl": {
                                "object": 1636,
                                "owner": "system.user.admin",
                                "ownerGroup": "system.group.administrator",
                                "state": 1636
                              },
                              "_id": "0_userdata.0.Targetdoorstate",
                              "type": "state"
                            }
                            
                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @Graydens last edited by paul53

                              @graydens sagte: so richtig?

                              Nein:

                                "common": {
                                  "name": "Currentdoorstate",
                                  "role": "value",
                                  "type": "number",
                                  "desc": "Manuell erzeugt",
                                  "states": {
                                    "0": "Geschlossen",
                                    "1": "Offen",
                                    "2": "Offen/Bewegung"
                                  },
                              
                                "common": {
                                  "name": "Targetdoorstate",
                                  "role": "switch",
                                  "type": "boolean",
                                  "states": {
                                      "false": "Zu",
                                      "true": "Auf"
                                  }
                              

                              Außerdem solltest Du "Targetdoorstate" mit den Endlagen synchronisieren:

                              Bild_2021-01-21_144301.png

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

                                @paul53

                                geändert, aber trotzdem bleibt er auf 2 wenn er von 0 auf 1 springen sollte.
                                Was mache ich hier nur falsch 😞

                                {
                                  "from": "system.adapter.admin.0",
                                  "user": "system.user.admin",
                                  "ts": 1610818991491,
                                  "common": {
                                    "name": "Currentdoorstate",
                                    "role": "value",
                                    "type": "number",
                                    "desc": "Manuell erzeugt",
                                    "states": {
                                      "0": "Geschlossen",
                                      "1": "Offen",
                                      "2": "Offen/Bewegung"
                                    },
                                    "min": 0,
                                    "max": 2,
                                    "def": 0,
                                    "read": true,
                                    "write": false
                                  },
                                  "native": {},
                                  "acl": {
                                    "object": 1636,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator",
                                    "state": 1636
                                  },
                                  "_id": "0_userdata.0.Currentdoorstate",
                                  "type": "state"
                                }
                                
                                {
                                  "from": "system.adapter.admin.0",
                                  "user": "system.user.admin",
                                  "ts": 1610819016433,
                                  "common": {
                                    "name": "Targetdoorstate",
                                    "role": "switch",
                                    "type": "boolean",
                                    "desc": "Manuell erzeugt",
                                    "read": true,
                                    "write": true,
                                    "def": false
                                  },
                                  "native": {},
                                  "acl": {
                                    "object": 1636,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator",
                                    "state": 1636
                                  },
                                  "_id": "0_userdata.0.Targetdoorstate",
                                  "type": "state"
                                }
                                
                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @Graydens last edited by

                                  @graydens sagte: bleibt er auf 2 wenn er von 0 auf 1 springen sollte.

                                  "Currentdoorstate" kann nie von 0 auf 1 springen, da einige Zeit vergeht bis das Tor offen ist. Erst wenn die Endlage "Offen" erreicht ist, springt der Wert von 2 auf 1.

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

                                    @paul53

                                    Genau das passiert eben nicht.

                                    Ich beobachte:
                                    von TDS(TargetDoorState) und CTS (CurrentDoorState) 1 auf 0 kein Problem! zwar wird offen mit geschlossen verwechselt, aber sollte zum testen ja egal sein?

                                    ändert man jetzt TDS mit der App auf 1, springt CTS um auf 2 und verharrt hier.

                                    Auch wenn der KNX Sensor für den Sensor auf True geht, bleibt CTS auf 2.

                                    Ändere ich dann wieder TDS mit der APP auf 0, fährt das Tor (zwar in die falsche Richtung) aber aus 2 wird dann wieder 0 wenn der KNX Sensor anspricht....und es wird als beendet in der App dargestellt. Das Tor ist in Wirklichkeit ZU, wird aber als Offen angezeigt.

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

                                      @graydens sagte: Auch wenn der KNX Sensor für den Sensor auf True geht, bleibt CTS auf 2.

                                      Poste bitte den erzeugten Javascript Code ohne die letzte Zeile in Code tags.

                                      @graydens sagte in Garagentor mit 2 Sensoren:

                                      Das Tor ist in Wirklichkeit ZU, wird aber als Offen angezeigt.

                                      Deshalb solltest Du TDS mit den Endlagen synchronisieren.

                                      Bild_2021-01-21_150502.png

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

                                        @paul53

                                        Sorry hatte ich übersehen, ist nun eingepflegt.

                                        Du meinst vermutlich den ganzen Code ohne die letzte (grüne)Zeile?

                                        var offen, geschlossen, current;
                                        
                                        // Beschreibe diese Funktion …
                                        function tor() {
                                          if (offen) {
                                            current = 1;
                                          } else if (geschlossen) {
                                            current = 0;
                                          } else {
                                            current = 2;
                                          }
                                          setState("0_userdata.0.Currentdoorstate"/*Currentdoorstate*/, current, true);
                                        }
                                        
                                        
                                        on({id: '0_userdata.0.Targetdoorstate', change: "ne"}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          setState("knx.0.Tür_und_Tor.Tor.Garage_Garagentor_Auf_Zu_Stop_Schalten"/*Garage_Garagentor Auf/Zu/Stop_Schalten*/, true);
                                          setStateDelayed("knx.0.Tür_und_Tor.Tor.Garage_Garagentor_Auf_Zu_Stop_Schalten"/*Garage_Garagentor Auf/Zu/Stop_Schalten*/, false, 1000, false);
                                        });
                                        offen = getState("knx.0.Tür_und_Tor.Tor.Garage_Garagentor_Status_offen").val;
                                        geschlossen = getState("knx.0.Tür_und_Tor.Tor.Garage_Garagentor_Status_zu").val;
                                        tor();
                                        on({id: 'knx.0.Tür_und_Tor.Tor.Garage_Garagentor_Status_zu', change: "ne"}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          geschlossen = (obj.state ? obj.state.val : "");
                                          tor();
                                          setState("0_userdata.0.Targetdoorstate"/*Targetdoorstate*/, false, true);
                                        });
                                        on({id: 'knx.0.Tür_und_Tor.Tor.Garage_Garagentor_Status_offen', change: "ne", ack: false}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          offen = (obj.state ? obj.state.val : "");
                                          tor();
                                          setState("0_userdata.0.Targetdoorstate"/*Targetdoorstate*/, true, true);
                                        });
                                        
                                        1;
                                        
                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @Graydens last edited by paul53

                                          @graydens
                                          Der erste Trigger (Targetdoorstate) darf nur auf Befehl reagieren!
                                          Der dritte Trigger (Garage_Garagentor_Status_offen) darf nicht nur auf Befehl reagieren (egal)!

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

                                            @paul53

                                            Vielen Dank, jetzt läuft es einwandfrei, habe noch etwas mit der Polarität für AUF und ZU gespielt und jetzt wird es auch in meiner App richtig angezeigt.

                                            Super Unterstützung, danke

                                            Anbei das Endprodukt!

                                            1.JPG

                                            paul53 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            445
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            27
                                            1265
                                            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