ESPHOME Programmierfehler

Gohten

New member
Hallo Heimnetz-Community,

ich möchte eine automatisches Hühnertor bauen.
Hardwaretechnisch ist soweit alles vorhanden. (Siehe Bilder) (NodeMCU - ESP32 / 4-fach Relaisplatine / Linearantrieb 12v, 2 (+-) Adrig mit Endschalter.
Leider bekomme ich die Programmierung nicht hin.

Was möchte ich haben:
Das Tor soll jeden morgen um 08:00 Uhr auffahren und zu Sonnenuntergang wieder zufahren.
Zusätzlich habe ich noch zwei Taster verbaut.
Einen zum Auffahren und einen zum Zufahren.
(Ausbaustufe 2 wären dann nochmal zwei Relais für eine Innen als auch Außenbeleuchtung)

Mein neuer bester Freund, der ChatGPD behauptet das der Code passt, was er aber nicht tut.
Sobald ich die beiden Taster an den Node anklemme, läuft dieser Amok.
Die Taster funktionieren so wie sie sollen, also Stromkreis schließen bei drücken.
Habe auch nochmal einen anderen NodeMCU angeklemmt, hab da aber das selbe Problem

Evtl. hat von euch jemand die Muse den Code zu prüfen ? 😬
Verbesserungsvorschläge wären sehr willkommen.
Hab noch die Log.- Datei in den Anhang gepackt.


Dank und Gruß

Alex

YAML:
esphome:
  name: huehnertor_test

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "L86myFNU4FQL0OleJd0coR8Oq8FW5aliHJs52O4XWzs="

ota:
  password: "7c482662ac73cb11f9cc1084728f6caf"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Huehnertor Fallback Hotspot"
    password: "nLGc4gDIg40b"

captive_portal:

binary_sensor:
  - platform: gpio
    pin: GPIO0
    name: "Tor auf"
    id: tor_auf
    on_press:
      - switch.turn_on: open_cover
      #- delay: 500ms
      #- switch.turn_off: open_cover
    #on_release:
      #- switch.turn_off: open_cover
      
  - platform: gpio
    pin: GPIO4
    name: "Tor zu"
    id: tor_zu
    on_press:
      - switch.turn_on: close_cover
      #- delay: 500ms
      #- switch.turn_off: close_cover
    #on_release:
      #- switch.turn_off: close_cover

switch:
  - platform: gpio
    pin: GPIO27
    inverted: True
    interlock: &interlock [open_cover, close_cover]
    id: open_cover
    restore_mode: RESTORE_DEFAULT_OFF

  - platform: gpio
    pin: GPIO14
    inverted: True
    interlock: *interlock
    id: close_cover
    restore_mode: RESTORE_DEFAULT_OFF

cover:
  - platform: time_based
    name: "Cover"
    id: my_cover
    open_action:
      - switch.turn_on: open_cover
    open_duration: 25s
    close_action:
      - switch.turn_on: close_cover
    close_duration: 25s
    stop_action:
    - switch.turn_off: open_cover
    - switch.turn_off: close_cover
    
    
text_sensor:
  - platform: sun
    name: Sun Next Sunrise
    type: sunrise
  - platform: sun
    name: Sun Next Sunset
    type: sunset
    update_interval: 10s



time:
  - platform: homeassistant
    on_time:
      # Jeden Tag am 08:00 Uhr
      - seconds: 0
        minutes: 0
        hours: 8
        then:
          - switch.toggle: open_cover
          - delay: 25000ms
          - switch.turn_off: open_cover
        
    
sun:
  latitude: 48.449051°
  longitude: 12.033950°   
  on_sunset:
    - elevation: -5°
      then:
         - switch.turn_on: close_cover
         - delay: 25000ms
         - switch.turn_off: close_cover


sensor:
  - platform: sun
    name: Sun Elevation
    type: elevation
  - platform: sun
    name: Sun Azimuth
    type: azimuth
 

Anhänge

  • logs_manueller-test_upload.txt
    29,4 KB · Aufrufe: 5
  • 20230122_185021.jpg
    20230122_185021.jpg
    496,1 KB · Aufrufe: 7
  • 20230122_185027.jpg
    20230122_185027.jpg
    784,7 KB · Aufrufe: 7
Hi :)

Bin zwar nicht sonderlich bewandert in solchen Dingen, aber funktioniert der Code denn "ohne" die Hardware?
Sobald ich die beiden Taster an den Node anklemme, läuft dieser Amok.
Liest sich für mich erstmal ein wenig so... Dann wäre da noch die Frage, was genau "Amok laufen" bedeutet. Glaube eher nicht, dass ich Dir dabei eine große Hilfe sein kann, aber vielleicht hilft es anderen mit mehr Erfahrung in dem Bereich 🙃
 
Wenn ich den Part mit dem "Amok laufen" im Log richtig identifiziere fällt auf, dass jeweils vorher 'Sun Next Sunset': Sending state '' lief - das entspricht dem Part im Code, der mich bereits irritiert hat: Wenn - platform: sun auf sun.sun von HA schließen lässt, was soll dann type: sunrise und type: sunset sein? Solche Attribute gibt es dort erstmal nicht, im Kontrast zu elevation / azimuth beim letzten Sensor, die es sehr wohl gibt.

Möglich, dass hier deshalb ein leerer state gesendet wird, der dann zu Problemen führt - vielleicht liege ich damit auch völlig daneben, da ich eigentlich weder mit HA noch mit ESP zu tun habe, aber vielleicht kann damit ja jemand anders was anfangen :D
 
Denke auch, dass es eher Hardware seitig ein Problem gibt. Der Code sieht erstmal nicht auffällig aus - außer, dass du den Text Sensor der Sonne nicht unbedingt bräuchtest. Daher auch von mir die Frage:

Hast du einen Schaltplan?
Was hast du denn für Schalter / Taster verbaut und wie sind diese angeklemmt, bzw welche Spannung hängt an denen? Prellen die vll?
 
Ich frage hauptsächlich, weil ich das Öffnen / Schließen bzw. die Motorsteuerung für die Klappe bei mir zuerst auch über Relais gemacht hatte. Ich habe die Spannungsumkehr aber mit nur zwei Relais gemacht. Auf deinen Bildern sind aber vier davon und ein Haufen Kabel. Mittlerweile nutze ich allerdings eine Motorsteuerung die etwas mehr Strom bewältigt, da der Motor beim öffnen doch etwas mehr zieht. Nach einer Weile klebt dann da Relais oder war kaputt.

Dann nicht auf und Hühner nicht glücklich 😂

Gruß
Michael
 
Hallo Zusammen,
Schaltplan habe ich leider keinen, ja die Polumkehr mache ich mit 4 Relais. Kannte die Motorsteuerung vorher noch nicht.
Die Hardware hat mit dem Cover-Code aus der ESP-Home Anleitung schon funktioniert,
(im Anhang der Code) nur da war nur ein Taster und keine Zeit Komponente.
Das hat mir nicht gefallen. Ich möchte eben je einen Taster für auf und zu, der auch nur die beiden jeweiligen Relais schaltet, wenn er betätigt wird.
Die meisten Kopfzerbrechen macht mir, warum der ESP32 die Relais aus- und einschaltet (0,1 sek.) wenn die Taster angeschlossen sind, obwohl diese nicht betätigt sind :unsure: Wenn Stromkreis nicht geschlossen ist durch die Taster, wie erkennt er die ???
Hab die Taster natürlich auch durchgemessen. Kein Strom wenn nicht betätigt.
Check ich nicht.

YAML:
esphome:
  name: huehnertor

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "L86myFNU4FQL0OleJd0coR8Oq8FW5aliHJs52O4XWzs="

ota:
  password: "7c482662ac73cb11f9cc1084728f6caf"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Huehnertor Fallback Hotspot"
    password: "nLGc4gDIg40b"

captive_portal:

binary_sensor:
- platform: gpio
  pin:
    number: GPIO10
  id: button
  on_press:
    then:
      # logic for cycling through movements: open->stop->close->stop->...
      - lambda: |
          if (id(my_cover).current_operation == COVER_OPERATION_IDLE) {
            // Cover is idle, check current state and either open or close cover.
            if (id(my_cover).is_fully_closed()) {
              id(my_cover).open();
            } else {
              id(my_cover).close();
            }
          } else {
            // Cover is opening/closing. Stop it.
            id(my_cover).stop();
          }

switch:
- platform: gpio
  pin: GPIO12
  inverted: true
  interlock: &interlock [open_cover, close_cover]
  id: open_cover
- platform: gpio
  pin: GPIO14
  inverted: true
  interlock: *interlock
  id: close_cover

cover:
- platform: time_based
  name: "Cover"
  id: my_cover
  open_action:
    - switch.turn_on: open_cover
  open_duration: 25s
  close_action:
    - switch.turn_on: close_cover
  close_duration: 25s
  stop_action:
    - switch.turn_off: open_cover
    - switch.turn_off: close_cover
 
Habe jetzt alles außer die Taster und die Relais auskommentiert. Leider kein Erfolg. Permanent Schaltet er die Relais ein und aus. Nur wenn ich einen der beiden Taster drücke hört das Schalten auf. Bei dem zweiten Taster ist im das drücken egal.

🤯🤯🤯
 
Ich habe noch mal ganz genau in die Doku geschaut und festgestellt, dass deine Einrückungen nicht stimmen. Wundert mich, dass du keine Fehlermeldung bekommst. Laut Doku sollte es so aussehen:

YAML:
switch:
  - platform: gpio
    pin:
      number: 25
      inverted: true

Bei dir wird dann wohl das inverted: true nicht korrekt erkannt und deshalb schaltet er ständig das Relais.
 
Servus Zusammen,

@mkonline: Das ist sehr interessant, damit wären wieder zwei Relais frei für die Beleuchtung. Danke dafür.

Ich habe noch mal ganz genau in die Doku geschaut und festgestellt, dass deine Einrückungen nicht stimmen. Wundert mich, dass du keine Fehlermeldung bekommst. Laut Doku sollte es so aussehen:

YAML:
switch:
  - platform: gpio
    pin:
      number: 25
      inverted: true

Bei dir wird dann wohl das inverted: true nicht korrekt erkannt und deshalb schaltet er ständig das Relais.

@azrael783: kann das leider so nicht nachstellen, sobald ich die Zeile einrücke bekomme ich einen Fehler ausgegeben.
 
So, bin nun einen riesen Schritt weiter gekommen !!
Ich habe die Taster ohne Pullup-Wiederstände verbaut.

Activating internal pullups​

If you’re hooking up a button without an external pullup or see lots of ON/OFF events in the log output all the time, this often means the GPIO pin is floating.

For these cases you need to manually enable the pull-up (or pull-down) resistors on the ESP, you can do so with the Pin Schema.
YAML:
binary_sensor:
  - platform: gpio
    pin:
      number: D2
      mode:
        input: true
        pullup: true
    name: ...

Den Code habe ich entsprechend angepasst.
Invertieren musste ich die Pins auch noch......:sneaky:

Also mit den Tasten kann ich nun das Tor fahren, morgen geht´s dann weiter mit der Automatisierung.
Hier nochmal der Code, falls nochmal jemand so ein Problem hat.

YAML:
binary_sensor:
  - platform: gpio
    pin:
     number: GPIO4
     inverted: true
     mode:
       input: True
       pullup: true
    name: "Taster öffnen"
    on_press:
      - switch.turn_on: open_cover
    on_release:
      - switch.turn_off: open_cover
   
  - platform: gpio
    pin:
     number: GPIO0
     inverted: true
     mode:
       input: True
       pullup: true
    name: "Taster schließen"
    on_press:
      - switch.turn_on: close_cover
    on_release:
      - switch.turn_off: close_cover


switch:
  - platform: gpio
    pin: GPIO27
    name: "Cover_open"
    inverted: True
    interlock: &interlock [open_cover, close_cover]
    id: open_cover


  - platform: gpio
    pin: GPIO14
    name: "Clover_close"
    inverted: True
    interlock: *interlock
    id: close_cover

Danke an alle die geantwortet haben ;)

Gruß Alex
 
Ich habe gerade gelesen: Du hast den Code von ChatGPT erstellen / prüfen lassen. Der Code den das System nutzt basiert allerdings auf einer Datengrundlage die ca. 1,5 Jahre alt ist ...
 

Neueste Beiträge

Letzte Anleitungen

Statistik des Forums

Themen
5.438
Beiträge
53.745
Mitglieder
5.234
Neuestes Mitglied
Distiller
Zurück
Oben