ESPHome Garagentor

Möchte mittels einem ESP8266 und einem Relay Modul das Garagentor öffnen/ schließen was auch soweit schon funktioniert!

Das Problem ist bei Stromausfall oder eigentlich wenn der Strom wieder kommt.
Beim Power up des ESP wird das relay kurz geschaltet und würde somit das Garagentor öffnen was natürlich nicht gut währe.

Gibt es eine Lösung?
(restore_mode: always_on / off) hilft nicht! auch habe ich schon alle GPIO pins durchprobierte)

vielleicht eine Zeitverzögerung einsetzen.

In Sinne von:
ESP Start → set timer einmalig
Relais Ausgang im laufenden Programm kann nur schalten wenn Timer abgelaufen.

leider reicht mein YAML nicht für mal eben …

Gruß
Frank

Nicht getestet:
early_pin_init : false

early_pin_init (Optional, boolean): Specifies whether pins should be initialised as early as possible to known values. Recommended value is false where switches are involved, as these will toggle when updating the firmware or when restarting the device. Defaults to true.

Hier gefunden :

1 „Gefällt mir“

@djeeens
Also das early_pin_init : false hat geholfen und funktioniert!

Aber nur mit einem D1 Mini und bestimmten GPIOs z.B GPIO4 (D2)
Mit einem ESP 01 der zum Relay Modul aufgesteckt wird funktioniert es nicht!(GPIO0)
Aber egal dann halt der D1 Mini
Danke und Gruß

@Wolfi1

ich bin auch gerade dabei mittels ESPHome mein Garagentor smart zu machen. Am liebsten auch mit einem Sensor (Reed Kontakt).

Welchen ESPHome Code hast du als Basis genutzt? Ich bin bei meiner Internet Recherche über das Video und die GitHub Seite von Daniel Schneider gestoßen. Nur leider ist der ESP Code irgendwie nicht mehr online.

Merci und VG

Peter

Ich kann auf den Daniel Schneider Code noch zugreifen:

Der größte Teil des Codes beschäftigt sich allerdings mit den Lauflichtern, die man nicht braucht.

Kürzere Version ohne Lauflichter (aber mit zwei Reed-Kontakten für Tür-Offen und Tür-Geschlossen):

esphome:
  name: garagentor
  friendly_name: garagentor

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "XXXXXXXX"

ota:
  - platform: esphome
    password: "XXXXXXXXXXXXXXX"

wifi:
  ssid: "XXXXXXXXXXXXXXXX"
  password: "XXXXXXXXXXXXXXXXXXXXX"
 
  # Set minimum WiFi security - reject connections to networks with weaker security
  # Default is WPA2 on ESP32, WPA on ESP8266 (will change to WPA2 in 2026.6.0)
  min_auth_mode: WPA2  # Or WPA3 for ESP32 if all your networks support it

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "XXXXXXXXXXXXXXXXXX"
    password: "XXXXXXXXXXXXXXXXXXXXXXX"

# After 1 minute of unsuccessful WiFi connection attempts, the ESP will start a WiFi hotspot (with the credentials ap: from your configuration)
captive_portal:

script:
# Programmablauf während Tor sich öffnet
  - id: door_opening
    mode: restart
    then:
      - script.execute: stop_running_end_scripts
 
# Programmablauf wenn Tor vollständig geöffnet wurde
  - id: door_opened
    mode: restart
    then:
      - script.execute: stop_running_moving_scripts

# Programmablauf während Tor sich schließt
  - id: door_closing
    mode: restart
    then:
      - script.execute: stop_running_end_scripts

# Programmablauf wenn Tor vollständig geschlossen wurde
  - id: door_closed
    mode: restart
    then:
      - script.execute: stop_running_moving_scripts

# ggf. aktive Scripte stoppen
  - id: stop_running_end_scripts
    mode: restart
    then:
      - if:
          condition:
            - script.is_running: door_opened
          then:
            - script.stop: door_opened
      - if:
          condition:
            - script.is_running: door_closed
          then:
            - script.stop: door_closed

  - id: stop_running_moving_scripts
    mode: restart
    then:
      - if:
          condition:
            - script.is_running: door_opening
          then:
            - script.stop: door_opening
      - if:
          condition:
            - script.is_running: door_closing
          then:
            - script.stop: door_closing




switch:
# Relais für Signal an Motor
# mit on_turn_on automatisch wieder abschalten
  - platform: gpio
    name: "Garage Rolltor"
    id: garagentor_tor_relais
    pin: D7
    on_turn_on:
      - delay: 1s
      - switch.turn_off: garagentor_tor_relais    



binary_sensor:
# Reed-Kontakt für Tor vollständig geöffnet
  - platform: gpio
    name: "Garage Rolltor Offen"
    device_class: garage_door
    id: garagentor_tor_open_sensor
    pin: 
      number: D5
      inverted: true
    filters:
      - delayed_off: 500ms      
      - delayed_on: 100ms      
    on_release:
      - text_sensor.template.publish:
          id: garagentor_tor_status
          state: "Geöffnet"
      - script.execute: door_opened
    on_press:
      - text_sensor.template.publish:
          id: garagentor_tor_status
          state: "Tor schließt sich"
      - script.execute: door_closing

# Reed-Kontakt für Tor vollständig geschlossen
  - platform: gpio
    name: "Garage Rolltor geschlossen"
    device_class: garage_door
    id: garagentor_tor_closed_sensor
    pin: 
      number: D6
      inverted: true
    filters:
      - delayed_off: 500ms      
      - delayed_on: 100ms      
    on_release:
      - text_sensor.template.publish:
          id: garagentor_tor_status
          state: "Geschlossen"
      - script.execute: door_closed
    on_press:
      - text_sensor.template.publish:
          id: garagentor_tor_status
          state: "Tor öffnet sich"
      - script.execute: door_opening

# Taster zur manuellen Bedienung des Tores
# schaltet bei Druck das Relais
  - platform: gpio
    name: "Garagentor Taster"
    id: garagentor_tor_btn
    pin: D1
    filters:
      - delayed_off: 500ms
    on_press:
      then:
        - switch.turn_on: garagentor_tor_relais
    on_release:
      then:
        - switch.turn_off: garagentor_tor_relais


text_sensor:
  - platform: template
    name: "Garagentor Tor-Status"
    id: garagentor_tor_status
    lambda: |-
      if(!id(garagentor_tor_closed_sensor).state){
        return {"Geschlossen"};
      } else if (!id(garagentor_tor_open_sensor).state){
        return {"Geöffnet"};
      } else {
        return {"In Bewegung"};
      }
    update_interval: 20s

jetzt geht es bei mir auch wieder, keine Ahnung warum bei mir da ein 404 war….

Vielen Dank für deine Antwort und die kürzere Version. Das werde ich mal als Basis nutzen

Aus welchem Grund bevorzugen alle immer ein/zwei Reedkontakte ? Es gibt doch auch analoge Seilzüge die man nutzen kann und so die genaue Öffnung hat…

Zwei einfache Reedkontakte sind mit Sicherheit billiger, einfacher einzubauen, wartungsärmer und haltbarer als irgendein Seilzug. Sie reichen aus, um den Zustand und die Funktion des Garagentors grob zu prüfen. Die genaue Position des Tors zu jeder Zeit wird von den meisten Nutzern nicht benötigt. Es reicht, wenn das Tor in einer akzeptablen Zeit an der Endposition ankommt. Viele sind bereits mit nur einem Kontakt für “Geschlossen” zufrieden. Wann das Tor auf ist, das sieht man ja meist selber.