Abus Wintecto Terrassentüröffner in HA einbinden?

Hallo in die Runde!

Hat jemand einen Tip wie ich den Terrassentürantrieb Abus Wintecto in Homeassistant einbinden kann?
Es gibt die Abus One Bridge, die anscheinend aber nur einen Alexa Skill hat. Homekit Kompatibilität war wohl geplant, aber ist nie gekommen. Die harte Lösung wäre die Bluetooth Fernbedienung mit einem ESP und Relais zu verdrahten und dann die Einbindung so zu realisieren. Dabei muss man sich aber fragen, ob es sich lohnt dafür die Fernbedienung im wahrsten Sinne des Wortes aufzubohren.
Danke für eurer Ideen.
Viele Grüße
Markus

Ich bin auch schon ewig auf der Suche nach einer Möglichkeit den Türantrieb in HA einzubinden. Leider ohne Erfolg. Beim Vorgänger gab es ein Leck, wodurch es gehackt werden konnte. Vermute mal, desshalb wollen sie keinen Zugriff von Drittanbietern zulassen.

Ich habe mir diese Bridge-ONE zugelegt damit ich zumindest auch Remote die Tür öffnen/schließen kann.

Bei den SmartHome-Settings wird neben Alexa auch Google Assistant angeboten.

Jemand eine Idee wie man das ggf. über Umwege in HA eingebunden bekäme ?

Willkommen im Forum
Das würde mich auch interessieren. Ich habe Abus mal angeschrieben und gefragt ob eine Anbindung an HA möglich oder geplant ist.
Mal schauen ob und wie sie antworten.

@LuckyCT Diese Antwort kam eben von ABUS.
Zitat: 'Über die Bridge One können Sie nur eine Anbindung an Alexa bzw. Google Home erhalten. Eine Steuerung über Home Assistant ist nicht möglich.

Via Alexa / Google Home ist folgendes möglich:
Über die Sprachsteuerung ist ein Öffnen, hier mit zusätzlichem Pin-Code, und Verschließen möglich.
Steuerung via Routinen:
Triggerpunkte sind: offen, verriegelt, blockiert
Ausführung: verriegeln’

Hi zusammen,
ich habe ein Wintecto genau so in Betrieb, wie von Macello genannt, sprich per Bridge in Alexa.
In HomeAssistant kann es aus meiner Sicht z.B. integriert werden indem man:

  • In HA einen input_boolean (Helfer) “wintecto_locked” anlegt und diesen in Alexa veröffentlicht
  • In Alexa zwei Routinen anlegt um diesen input_boolean zu setzen (Getriggert durch offen - input_boolean auf false / Getriggert durch verriegelt - input boolean auf true)
  • Danach kann in HA ein Template-Lock angelegt werden (Value Template wird der input_boolean, lock und unlock starten jeweils ein script, dass über den Alexa-Media-Player “custom command” das ver- und entriegeln [PIN nicht vergessen] auslöst)

Damit ist es ganz normal möglich über ein HA-Lock das Wintecto zu öffnen, zu schließen und auch den Status zu sehen (sogar auch wenn es manuell entriegelt wird). Ich habe on top noch ein paar Sicherheiten eingebaut, sodass er nur schließt wenn ein (separater) Türkontakt auch wirklich geschlossen ist und solche Themen…
Es gibt sicher besser/schöner integrierte Lösungen. Aber über Umwege immerhin alltagstauglich.

2 „Gefällt mir“

Moin in die Runde,

es ist jetzt schon ne Weile ruhig ums Thema, wollte es mir aber trotzdem nicht nehmen lassen kurz Erfolg zu vermelden :partying_face: Habe mein Wintecto seit gestern in HA, ganz ohne Alexa und Cloud. Ist aber eher ne Bastellösung als Out of the Box.

Mein Ansatz: Habe mir ne gebrauchte ABUS One Fernbedienung (CFF3100) besorgt, mit dem Schloss gepairt, die Platine der Fernbedienung aus dem Case raus, an Buttons und LEDs Dupont-Kabel gelötet, das Ganze mit nem ESP verbunden und per ESPHome integriert. Strom kommt ebenfalls vom ESP, sodass keine Batterie mehr nötig ist.

Leider gibt das Schloss keinen richtigen Status an die Fernbedienung zurück, sodass man besser nur schließt, wenn man auch da ist (was ja der Normalfall sein sollte).

Hier mal ein schnelles Bild. ESP ist auf der Rückseite.

Falls ihr mehr wissen wollt, teile ich gern mein YAML bzw. einen Schaltplan.

An der Lösung wäre ich interessiert. Ich hatte überlegt den Fernbedienungs Knopfdruck über eine ESP Relais zu simulieren.

Ist bei mir dann aber an der Notwendigkeit gescheitert da ich die Tür mit der Apple Watch öffnen kann und ich bei sicherheitsrelevanten Themen die Hersteller App bevorzuge. Trotzdem finde ich das Thema spannend.

Teile

  • 1x ABUS HomeTec Pro Bluetooth Fernbedienung CFF3100
  • 1x Wemos D1 Mini ESP8266
  • 1x LDO, 3V fest, TO-92
  • 2x Transistor NPN (BC547B), 45V, 100mA, TO-92
  • 2x Elektrolytkondensator, 10µF, THT
  • 2x Keramikkondensator, 100nF, 50V, THT
  • 4x Widerstand 100 Ohm
  • 2x Widerstand 10 kOhm
  • Lochrasterplatine, doppelseitig, 4x6cm
  • Stiftleiste, RM 2.54, gerade
  • Dupont Kabel

Schaltplan

Hinweis: Legt man die CFF3100 mit Batteriefach und Pinleiste nach oben, sind die beiden rechten Pins 3V und GND (s. Schaltplan).

Kurzanleitung

  1. Stiftleisten an CFF3100 und ESP löten.
  2. Dupont Kabel an die Buttons und LEDs löten. Insbesondere bei den LEDs ist Fingerspitzengefühl gefragt. Auf die Leiterbahnen und die richtige Positionierung achten (s. Bild).
  3. Bauelemente wie im Schaltplan auf der Lochrasterplatine anordnen und verlöten. Ich habe eine 4x6cm genommen, weil ich die da hatte. Hier lässt sich sicher noch das ein oder andere optimieren.
  4. Je nach Anordnung der Bauelemente dürfen CFF3100 und ESP erst relativ am Schluss auf die Lochrasterplatine gelötet werden.
  5. Ganz zum Schluss kommen dann die Dupont Kabel an die vorbereiteten Widerstände.

ESPhome

Mit dem YAML lässt sich die CFF3100 als “normale” lock entity per HA schließen. Da die Fernbedienung nur ein sehr rudimentäres Feedback ausgibt, wird der Status des Schlosses in der Regel aber als unbekannt angezeigt.

esphome:
  name: lock-wintecto
  friendly_name: "Terrassentür"

esp8266:
  board: esp01_1m

# Enable logging
logger:

globals:
  - id: awaiting_action
    type: int
    initial_value: '0'    # 0 = idle, 1 = awaiting lock result, 2 = awaiting unlock result
  - id: initial_flash_seen
    type: bool
    initial_value: 'false'
  - id: last_led
    type: int
    initial_value: '0'    # 1 = lock LED was last seen, 2 = unlock LED was last seen
  - id: alternating_edges
    type: int
    initial_value: '0'
  - id: monitor_deadline
    type: unsigned long
    initial_value: '0'
  - id: last_known_lock_state
    type: int
    initial_value: '0'    # 1 = locked, 2 = unlocked
  - id: lock_error_state
    type: bool
    initial_value: 'false'

# GPIO outputs (button presses)
switch:
  - platform: gpio
    id: button_lock
    pin: GPIO14
    on_turn_on:
      - delay: 300ms
      - switch.turn_off: button_lock
    interlock: [button_unlock]

  - platform: gpio
    id: button_unlock
    pin: GPIO4
    on_turn_on:
      - delay: 300ms
      - switch.turn_off: button_unlock
    interlock: [button_lock]

# GPIO inputs (LED cathodes)
binary_sensor:
  - platform: gpio
    id: led_lock
    pin:
      number: GPIO13
      mode:
        input: true
        pullup: true
      inverted: true
    # Called when the lock LED turns ON (rising edge)
    on_press:
      then:
        - lambda: |-
            unsigned long now = millis();
            // If we're not monitoring (no recent button press), ignore
            if (id(awaiting_action) == 0) return;
            // If we are awaiting a lock result and haven't seen the initial flash yet,
            // this could be the initial flash for a lock attempt.
            if (!id(initial_flash_seen)) {
              if (id(awaiting_action) == 1) {
                id(initial_flash_seen) = true;
                id(last_led) = 1;
              }
              return;
            }
            // We already saw the initial flash: count alternating on-events
            if (id(last_led) != 1) {
              id(alternating_edges) += 1;
              id(last_led) = 1;
            }
  - platform: gpio
    id: led_unlock
    pin:
      number: GPIO12
      mode:
        input: true
        pullup: true
      inverted: true
    on_press:
      then:
        - lambda: |-
            unsigned long now = millis();
            if (id(awaiting_action) == 0) return;
            if (!id(initial_flash_seen)) {
              if (id(awaiting_action) == 2) {
                id(initial_flash_seen) = true;
                id(last_led) = 2;
              }
              return;
            }
            if (id(last_led) != 2) {
              id(alternating_edges) += 1;
              id(last_led) = 2;
            }

  # Template binary sensor reading the global error flag
  - platform: template
    id: lock_error
    name: "Status"
    device_class: problem
    lambda: |-
      return id(lock_error_state);

# Monitor interval: evaluate the window after a press
interval:
  - interval: 200ms
    then:
      - lambda: |-
          unsigned long now = millis();
          // Only act if we are currently monitoring
          if (id(awaiting_action) == 0) return;

          // If alternating_edges reached the threshold already, set error early
          if (id(alternating_edges) >= 10) {
            id(lock_error_state) = true;
            // stop monitoring
            id(awaiting_action) = 0;
            id(initial_flash_seen) = false;
            id(last_led) = 0;
            id(alternating_edges) = 0;
            return;
          }

          // If monitoring window expired, decide success or error
          if (now > id(monitor_deadline)) {
            if (id(alternating_edges) >= 10) {
              id(lock_error_state) = true;
              // don't change last_known_lock_state
            } else {
              // no alternating error pattern; assume the requested action succeeded
              id(lock_error_state) = false;
              if (id(awaiting_action) == 1) {
                id(last_known_lock_state) = 1; // locked
              } else if (id(awaiting_action) == 2) {
                id(last_known_lock_state) = 2; // unlocked
              }
            }
            // Reset monitoring flags
            id(awaiting_action) = 0;
            id(initial_flash_seen) = false;
            id(last_led) = 0;
            id(alternating_edges) = 0;
          }

# Lock entity
lock:
  - platform: template
    id: backdoor
    name: "Terrassentür"
    assumed_state: true
    lock_action:
      - lambda: |-
          id(awaiting_action) = 1;  // waiting for lock result
          id(initial_flash_seen) = false;
          id(last_led) = 0;
          id(alternating_edges) = 0;
          id(lock_error_state) = false;
          id(monitor_deadline) = millis() + 12000;
      - switch.turn_on: button_lock

    unlock_action:
      - lambda: |-
          id(awaiting_action) = 2;  // waiting for unlock result
          id(initial_flash_seen) = false;
          id(last_led) = 0;
          id(alternating_edges) = 0;
          id(lock_error_state) = false;
          id(monitor_deadline) = millis() + 12000;
      - switch.turn_on: button_unlock

    lambda: |-
      if (id(lock_error_state)) {
        // On error, just keep showing the last known state instead of NONE
        if (id(last_known_lock_state) == 1) {
          return LOCK_STATE_LOCKED;
        } else if (id(last_known_lock_state) == 2) {
          return LOCK_STATE_UNLOCKED;
        } else {
          return LOCK_STATE_NONE;
        }
      }

      // Normal case → return last known
      if (id(last_known_lock_state) == 1) {
        return LOCK_STATE_LOCKED;
      } else if (id(last_known_lock_state) == 2) {
        return LOCK_STATE_UNLOCKED;
      } else {
        return LOCK_STATE_NONE;
      }

Hi,

funktioniert die Lösung bei dir noch? Also Steuerung über den Alexa-Media-Player usw.

Ich suche schön länger nach einer Möglichkeit um Fenster per Homeassistant öffnen und schließen zu können. Werde einen Kettenantrieb verbauen, möchte aber zusätzliche Einbruchssicherheit indem der Griff gedreht wird, wenn das Fenster zu ist.

Das kann ich dir nicht sagen, ich habe den Fenstergriff nie gekauft. Da man den nicht in HA einbinden kann, war er raus. Die Antwort kam damals auf Nachfrage bei ABUS.

Sorry, ich hatte das falsche Zitat drin. Die Frage ging an @captaindork

Hi, ja habe ich exakt noch so in Betrieb!

@captaindork Hab das Lock gekauft und installiert. Sehe ich das richtig, dass man nicht den Status gekippt angezeigt bekommt? Bei mir zeigt er dann immer verriegelt. Also so als wäre der Griff nach unten.

Hallo,

Vielen Dank für die Bilder und den Schaltplan. Ich versuche dies gerade mit meinen beschränken Lötfahigkeiten nachzubauen.

Kannst du nochmal genauer die lötpunkte für die led’s zeigen, also die beiden gelben Kabel? Bin mir ein wenig unsicher wo / an welche Leiterbahn die dran müssen :/..

Viele Grüße!

Hi @Marcel4,

freut mich zu hören, dass meine Anleitung auf Interesse stößt. Leider habe ich keine besseren Bilder mehr und da das Ganze seit mehr als einem halben Jahr ohne Probleme läuft, habe ich die Platine mittlerweile relativ schlecht zugänglich verstaut.

Meine Lötkenntnisse sind auch nicht besonders .. war mein drittes Lötprojekt (was man glaube ich auch teilweise an den Bildern sieht :see_no_evil_monkey: ). Musst dich wahrscheinlich gar nicht so sehr an den Leiterbahnen orientieren. Am besten setzt du die zwei Lötpunkte oberhalb und unterhalb der jeweiligen LED direkt an deren Lötpunkten. Hier solltest du zügig und genau arbeiten, dass du die LED nicht ablötest.

Hast du ein Multimeter? Damit kannst du recht einfach testen, wo du den besten Kontakt hast.

LG