Ankündigung

Einklappen
Keine Ankündigung bisher.

Status Garagentor

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Status Garagentor

    Hallo,

    ich habe in meinem Torantrieb zwei potentialfreie Relais, die ich abfrage um den Status des Garagentors zu erhalten (geschlossen, halb offen, offen).

    Jetzt habe ich in der iPhone Visu einen Schalter eingefügt, der das Garagentor öffnet und schließt und auch immer den Status anzeigt (ON=offen, OFF=geschlossen). Genau die gleiche Gruppenadresse benutze ich für den Tastsensor.

    Nun zu meinem Problem. Wenn das Tor aber über den Funksender bedient wird, verändert sich nicht der Status des Schalters. Sobald ich versuche, den Schalter manuell zu korrigieren, würde ich ja wieder schalten und das Tor geht dann entweder auf oder zu!

    Gibt es die Möglichkeit den Status eines EIB1 Objekts zu verändern ohne das eine state_changed Funktion zuschlägt?
    Danke schon mal im Voraus!

    #2
    Da wirst du nur mit Endschalter/Reedkontakte arbeiten müssen, die auf ein Binäreingang gehen.
    Gruß Andree Czybulski

    Kommentar


      #3
      wie fragst du denn das Relais ab?

      das Relais ändert sich doch wenn du das Tor mit dem Sender betätigst oder? Dann brauchst du doch nur das Relais auf einen Binäreingang legen und gut ist's....
      EPIX
      ...und möge der Saft mit euch sein...
      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

      Kommentar


        #4
        Zitat von pheno Beitrag anzeigen
        Gibt es die Möglichkeit den Status eines EIB1 Objekts zu verändern ohne das eine state_changed Funktion zuschlägt?
        Danke schon mal im Voraus!
        Ich weiß jetzt nicht genau was du mit "iPhone Visu" meinst (wahrscheinlich Misterhouse), ist aber auch egal.

        Was du benötigst sind hörende Gruppenadressen, d.h. du trägst bei deinem Schalter-Objekt (EIB1) die Status-Adressen als hörende Adressen ein. D.h. die Visualisierung folgt dann sowohl den Schaltbefehlen, als auch den Statusänderungen. Sieht vielleicht nur etwas komisch aus, da wenn du den Schalter auf "Zu" stellst, die Visualisierung "Zu" anzeigt (obwohl das Tor ja noch offen bzw. in Bewegung ist) und dann je nach Art der Zustandsübermittlung (Zyklisch oder nur bei Änderung) zwischendurch wieder "Offen" (wie stellst du Halboffen dar?) anzeigt um dann am Ende doch wieder "Zu" anzuzeigen.

        Mike

        Kommentar


          #5
          Also erst einmal danke für die vielen Antworten!!!

          Nur noch mal zur Info. Es handelt sich hier um MisterHouse, sorry das Detail hatte ich vergessen zu erwähnen.

          Mein Garagentorantrieb hat zwei Kontakte, der eine löst aus, wenn das Tor komplett geschlossen ist und der andere, wenn das Tor komplett geöffnet ist.

          Soweit so gut.
          In der items.mht habe ich folgendes definiert:
          Code:
          EIBW,   4/5/1|4/5/1,    Garagentor_auf,                 FENSTER_KONTAKTE,
          EIBW,   4/5/2|4/5/2,    Garagentor_zu,                  FENSTER_KONTAKTE,
          Diese lösen aus, wenn das Tor sich öffnet oder schließt.

          Dann habe ich noch folgende Gruppenadresse angelegt:
          Code:
          $Garage_Tor = new EIB1_Item('5/0/15');
          über die ich dann per Taster oder iPhone Visualisierung (MisterHouse) das Tor schalte (auf/zu).

          So wird geschaltet:
          Code:
          if (state_changed $Garage_Tor eq ON) {
          
                  if ($Garagentor_auf->state eq 'closed') {
                          print_log("Garagentor wird geschlossen...");
                  }
                  if ($Garagentor_zu->state eq 'closed') {
                          print_log("Garagentor wird geöffnet...");
                  }
          
                  set $Garage_Impuls ON;
                  set $Garage_Impuls OFF;
          } elsif (state_changed $Garage_Tor eq OFF) {
          
                  if ($Garagentor_auf->state eq 'closed') {
                          print_log("Garagentor wird geschlossen...");
                  }
                  if ($Garagentor_zu->state eq 'closed') {
                          print_log("Garagentor wird geöffnet...");
                  }
          
                  set $Garage_Impuls ON;
                  set $Garage_Impuls OFF;
          }
          Jetzt ist es so, wenn ich per Taster oder iPhone Visu das Tor schalte, dann gibt es kein Problem. Tor ist auf oder zu und so wird es auch angezeigt.

          Wenn ich jetzt allerdings den Funksender betätige, dann bekommt die Gruppenadresse 5/0/15 das ja nicht mit, jedoch die Torkontakte.

          Also möchte ich, wenn der Torkontakt auslöst, überprüfen, ob der Status stimmt und fall nicht korrigieren!
          Wenn ich jetzt aber bei Betätigung des Funksenders (Tor hat sich geöffnet) einen:

          set $Garage_Tor ON;

          setze, dann wird sofort der Schalter betätigt und der Torantrieb erhält wieder einen Impuls (Tor fährt wieder zu).

          Also suche ich nach einer Möglichkeit ein: set $Garage_Tor OHNE das der Impuls an das Tor gesendet wird.
          Vielleicht sehe ich ja den Wald vor lauter Bäumen nicht.
          Danke

          Kommentar


            #6
            Zitat von pheno Beitrag anzeigen
            In der items.mht habe ich folgendes definiert:
            Code:
            EIBW,   4/5/1|4/5/1,    Garagentor_auf,                 FENSTER_KONTAKTE,
            EIBW,   4/5/2|4/5/2,    Garagentor_zu,                  FENSTER_KONTAKTE,
            Diese lösen aus, wenn das Tor sich öffnet oder schließt.

            Dann habe ich noch folgende Gruppenadresse angelegt:
            Code:
            $Garage_Tor = new EIB1_Item('5/0/15');
            ...
            Also suche ich nach einer Möglichkeit ein: set $Garage_Tor OHNE das der Impuls an das Tor gesendet wird.
            Vielleicht sehe ich ja den Wald vor lauter Bäumen nicht.
            Danke
            Zwei Objekte für den Status ist schonmal schlecht. Was geht, ist aus diesen beiden Objekten per Code eins zu machen.

            Code:
            EIB1, 4/5/3, GaragentorStatus,
            Code:
            if (state_changed $Garagentor_auf eq 'closed') {
                set $GaragentorStatus ON;
            }
            if (state_changed $Garagentor_zu eq 'closed') {
                set $GaragentorStatus OFF;
            }
            Evtl. must du ON/OFF vertauschen.

            Nun hast du ein Object, das den Status anzeigt. Das kannst du dann als hörende Adresse dem Schalter hinzufügen ...

            Code:
            $Garage_Tor = new EIB1_Item('5/0/15+4/5/3');
            ... wenn du den hörende Gruppenadressen-Patch verwendest. Ansonsten durch ein EIB1G-Objekt modellieren.

            Mike

            Kommentar


              #7
              Hallo Mike und alle Anderen Mitleser,

              also ich habe versucht deinen Vorschlag umzusetzen, aber...es scheint nicht zu funktioneren.

              Folgendes habe ich jetzt programmiert:
              Code:
              items.mht:
              EIB1,   4/7/0,          Garage_Impuls,                  CONTROLS,
              EIBW,   4/5/1|4/5/1,    Garagentor_auf,                 FENSTER_KONTAKTE,
              EIBW,   4/5/2|4/5/2,    Garagentor_zu,                  FENSTER_KONTAKTE,
              
              EIB1,   5/0/15+0/5/8,   Garage_Tor,                     WETTER|OUTDOOR,
              EIB1,   0/5/8,          Garage_Status,                  CONTROLS,
              Kurz zur Erklärung.
              4/7/0 --> Impulsschalter für den Garagentorantrieb (d.h. egal ob ON/OFF, ein Impuls wird gesendet und der Antrieb fährt in die entgegengesetzte Richtung wie zuvor, oder stoppt, falls Tor in Bewegung!)
              4/5/1 --> Potentialfreies Relais #1 (Kontakt offen, wenn Tor ganz geöffnet, ansonsten geschlossen)
              4/5/2 --> Potentialfreies Relais #2 (Kontakt offen, wenn Tor ganz geschlossen, ansonsten offen)
              5/0/15 --> Tor öffnen/schließen und soll den Status anzeigen (ON=offen, OFF=zu)
              0/5/8 --> Eine zusätzliche Adresse, die den Status von 4/5/1 & 4/5/2 vereint

              Soviel zum Basic Setup. Programmiert habe ich folgendes:
              Code:
              if (state_changed $Garage_Tor eq ON or state_changed $Garage_Tor eq OFF) {
                      set $Garage_Impuls ON;
                      set $Garage_Impuls OFF;
              }
              if (state_changed $Garagentor_auf eq 'open') {
                      set $Garage_Status ON;
              } elsif (state_changed $Garagentor_zu eq 'open') {
                      set $Garage_Status OFF;
              }
              Das Problem ist nun, egal wie herum ich die If..elsif-Anweisung drehe, sobald Garage_Status sich ändert wird die hörende Gruppenadresse 5/0/15 angesprochen und das hat zur Folge, dass wieder ein Impuls an den Torantrieb gesendet wird. D.h. entweder geht das Tor ständig auf und zu oder wenn ich den Handsender betätige wird das Tor sofort wieder gestoppt.
              Allerdings möchte ich, dass ich über die Gruppenadresse 5/0/15 das Tor vernünftig öffnen/schließen kann und den Status angezeigt bekomme.

              So jetzt bin ich mal gespannt auf euer Feedback.
              Ist ein wenig kompliziert, geb ich zu, aber so ist das im Leben

              Kommentar


                #8
                Entschuldigung das hatte ich bisher nicht näher betrachtet. Du schaltest ja den Impuls immer dann, wenn sich der Status ändert. Das ist im Prinzip der Fehler, denn du willst ja das Tor eigentlich nur dann bewegen, wenn sich 5/0/15 ändert.

                Versuche doch bitte mal folgendes:
                Definiere ein weiteres Objekt:
                Code:
                EIB1,   5/0/15,   Garage_TorAnsteuerung,
                und dann natürlich
                Code:
                if (state_changed $Garage_TorAnsteuerung) {
                        set $Garage_Impuls ON;
                        set $Garage_Impuls OFF;
                }
                Dieses Objekt lauscht nur auf Änderungen der 5/0/15 und gibt dann den Impuls aus. Vom Status 0/5/8 bleibt es unberührt.

                Mike

                Kommentar


                  #9
                  Hallo,

                  also vielen Dank für das Feedback.
                  Ich habe mir das alles noch einmal angeschaut und jetzt habe ich eine Lösung.
                  War nicht so einfach, aber das ist es wohl.

                  Diesen Code habe ich jetzt implementiert:
                  Code:
                  #
                  # CONTROL GARAGE DOOR
                  #
                  if (state_changed $Garage_Tor eq ON) {
                          set $Garage_Impuls ON if (state $Garagentor_zu eq 'open');
                  }
                  if (state_changed $Garage_Tor eq OFF) {
                          set $Garage_Impuls ON if (state $Garagentor_auf eq 'open');
                  }
                  if (state_changed $Garagentor_zu eq 'closed') {
                          set $Garagentor_Timer 20;
                          set $Garage_Status ON;
                          set $Licht_Garage ON;
                  } elsif (state_changed $Garagentor_auf eq 'closed') {
                          set $Garagentor_Timer 20;
                          set $Garage_Status OFF;
                  }
                  if (state_changed $Garagentor_zu eq 'open') {
                          set $Licht_Garage OFF;
                          $Gate_Count = 0;
                  }
                  if (expired $Garagentor_Timer) {
                          if (state $Garagentor_auf eq 'closed' and state $Garagentor_zu eq 'closed') {
                                  set $Garage_Impuls ON
                          }
                  }
                  set $Garage_Impuls OFF if (state_changed $Garage_Impuls eq ON);
                  Wer Fragen dazu hat bitte her damit!
                  Beste Grüße, Manolo

                  Kommentar

                  Lädt...
                  X