ESPhome programmering

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
RadioDJ
Inlägg: 474
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

ESPhome programmering

Inlägg av RadioDJ »

Finns det någon som kan hjälpa mig med ett litet problem jag har.
Har tittat på många exempel på nätet, men får inget att fungera.
Jag har en ESP8266 som jag har kopplat ett relä och en knapp till.
Reläet vill jag kunna styra ifrån HomeAssistant, men jag vill även kunna styra det lokalt från knappen.
Detta är för att om nätverket går ner så vill jag fortfarande kunna slå av/på utrustningen som är kopplad via reläet.
Gärna en fungerande kod.
Redan offrat mycket tid på detta utan att lyckas.

Knappen behöver inte vara synlig i HomeAssistant.
Användarvisningsbild
GeekJoan
Admin
Inlägg: 11287
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: ESPhome programmering

Inlägg av GeekJoan »

Detta är vad AI tycker.

För att knappen ska fungera oberoende av Home Assistant behöver vi koppla samman knappen (binary_sensor) och reläet (switch) direkt i koden med hjälp av en on_press-funktion.

Här är ett exempel på hur din YAML-kod bör se ut:
YAML

Kod: Markera allt

# Definiera reläet
switch:
- platform: gpio
pin: GPIO12          # Ändra till den pinne ditt relä sitter på
name: "Mitt Relä"
id: relay_1          # Vi ger den ett ID för att kunna styra den internt

# Definiera den fysiska knappen
binary_sensor:
- platform: gpio
pin:
number: GPIO0      # Ändra till den pinne din knapp sitter på
mode: INPUT_PULLUP # Aktiverar internt motstånd
inverted: true     # Vanligt för knappar som drar till jord (GND)
name: "Fysisk Knapp"
on_press: 
# Här sker magin: När du trycker på knappen, växlar reläet läge lokalt
- switch.toggle: relay_1
Varför fungerar detta offline?

När du installerar den här koden på din ESP8266, skapas en instruktion i chippets minne: "Varje gång spänningen ändras på GPIO0, skicka en signal till GPIO12 att ändra läge". Denna instruktion kräver ingen kontakt med varken din router eller Home Assistant.
RoAd
Inlägg: 275
Blev medlem: 5 september 2024, 22:51:49

Re: ESPhome programmering

Inlägg av RoAd »

Det bör nämnas att den där koden ska kompileras i ett addon till home assistant som heter ESPHome device builder. Då kommer kopplingen till HA "på köpet".

Mycket trevlig addon som jag gjort mycket med. Bland annat en komplett bastustyrning med touchpanel.

Jag ser för övrigt att AIn hoppat över en del. Det saknas exempelvis definition av vilken typ av ESP det ska kompileras till.
Användarvisningsbild
carpelux
Inlägg: 1999
Blev medlem: 13 oktober 2007, 12:33:33
Ort: Varnhem

Re: ESPhome programmering

Inlägg av carpelux »

Så här ser koden ut för min kaffetimer. Den fungerar autonomt och går också at styra från home assistant.

Kod: Markera allt

esphome:
  name: kaffetimer
  friendly_name: Kaffetimer

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "din kryperingsnyckel här"

ota:
  platform: esphome
  password: "ditt lösenord här"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Kaffetimer Fallback Hotspot"
    password: "fallbacklösen här"

captive_portal:

sensor:
  - platform: wifi_signal
    name: Wifi-Styrka
    update_interval: 60s
  - platform: uptime
    name: Upptid

switch:
  - platform: gpio
    name: Brytare 
    icon: "mdi:lightbulb_outline"
    pin: GPIO12
    id: relay_1
    restore_mode: restore_default_off

binary_sensor:
  - platform: gpio
    pin: GPIO00
    id: IntButton
    internal: False
    filters:
      - invert:
      - delayed_off: 10ms
    on_press:
      - switch.toggle:
          id: relay_1

  - platform: gpio
    name: Brytare
    pin: GPIO04
    id: switch_1
    filters:
    - delayed_off: 10ms
    - delayed_on: 10ms
    
    on_press:
      if:
        condition:
            switch.is_on: relay_1
        then:
          - script.stop: timer_script
          - switch.turn_off: relay_1
        else:
          - script.execute: timer_script


output:
  - platform: esp8266_pwm
    id: blue_led
    pin: GPIO13
    inverted: True

light:
  - platform: monochromatic
    name: blueled
    output: blue_led
    internal: true

script:
  - id: timer_script
    then:
      - switch.turn_on: relay_1
      - delay: 1800s  #30min
      - switch.turn_off: relay_1
Användarvisningsbild
CPMS
Inlägg: 1554
Blev medlem: 6 december 2010, 20:34:36
Ort: Långsele, Västernorrland

Re: ESPhome programmering

Inlägg av CPMS »

Här är en komplett yaml till ett ESP8266 kort utan extra funktioner än vad som behövs.

Kod: Markera allt

esphome:
  name: esp8266_rela_med_knapp
  friendly_name: ESP8266 Relä med lokal knapp

# ===== Plattform =====
# Detta exempel är skrivet för ESP8266 (t.ex. D1 Mini, ESP-12, ESP-01S m.fl.)
esp8266:
  board: esp01_1m
  # Ändra board om du använder t.ex. d1_mini

# ===== Loggning =====
# Bra vid felsökning
logger:

# ===== API till Home Assistant =====
# Gör att reläet kan styras från HA
api:

# ===== OTA (valfritt men rekommenderat) =====
ota:

# ===== WiFi =====
wifi:
  ssid: "DITT_WIFI"
  password: "DITT_LÖSENORD"

  # Fallback AP om WiFi inte går upp
  ap:
    ssid: "ESP8266-Relä-Fallback"
    password: "12345678"

captive_portal:

# ==========================================================
# ======================= RELÄ =============================
# ==========================================================

switch:
  - platform: gpio
    id: relay               # Internt ID, används av knappen
    name: "Relä ESP8266"    # Syns i Home Assistant
    pin: GPIO5              # <-- ÄNDRA till rätt GPIO
    restore_mode: RESTORE_DEFAULT_OFF
    # restore_mode:
    # - RESTORE_DEFAULT_OFF → minns läge vid strömavbrott
    # - ALWAYS_OFF / ALWAYS_ON om man vill tvinga läge

# ==========================================================
# ======================= KNAPP ============================
# ==========================================================

binary_sensor:
  - platform: gpio
    id: local_button
    pin:
      number: GPIO4         # <-- ÄNDRA till rätt GPIO
      mode: INPUT_PULLUP    # Vanligt för knappar mot GND
      inverted: true        # Knappen ger LOW när den trycks
    internal: true          # <-- Syns INTE i Home Assistant

    # ===== När knappen trycks =====
    on_press:
      - switch.toggle: relay
      # switch.toggle:
      # - Om reläet är ON → blir OFF
      # - Om reläet är OFF → blir ON
      #
      # Detta sker HELT lokalt i ESP:n
      # och fungerar även utan WiFi / HA

# ==========================================================
# ================== SLUT PÅ KONFIG ========================
# ==========================================================
RadioDJ
Inlägg: 474
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Re: ESPhome programmering

Inlägg av RadioDJ »

Enormt tack.
Era exempel fungerar.
AI har jag provat i omgångar och aldrig fått något som fungerar rakt av.
Är alltid en massa småändringar som AI:t har glömt att berätta.

Bara en liten detalj som jag upptäckt.
Varje gång jag stoppar i utrustningen i vägguttaget så drar reläet ett kort ögonblick.
Kan man bli av med detta?
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4764
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: ESPhome programmering

Inlägg av Swech »

Jag har en ESP8266 som jag har kopplat ett relä och en knapp till.
Visar du hur du kopplat så blir det enklare att föreslå åtgärd

Swech
Användarvisningsbild
CPMS
Inlägg: 1554
Blev medlem: 6 december 2010, 20:34:36
Ort: Långsele, Västernorrland

Re: ESPhome programmering

Inlägg av CPMS »

RadioDJ skrev: 13 december 2025, 10:03:07 Varje gång jag stoppar i utrustningen i vägguttaget så drar reläet ett kort ögonblick.
Kan man bli av med detta?
Det du råkar ut för beror med största sannolikhet på att reläet (och/eller knappen) sitter på en boot-strappad GPIO på ESP8266.
ESP8266 läser vissa GPIO-pinnar redan vid uppstart för att avgöra hur den ska boota.
Det spelar ingen roll om pinnen senare används som utgång eller bara som ingång – nivån vid boot är det som är kritiskt.

Följande GPIO är boot-strappade och bör undvikas helt, både för reläer och knappar:
GPIO0 – måste vara HIGH vid boot (LOW = flash-läge)
GPIO2 – måste vara HIGH vid boot
GPIO15 – måste vara LOW vid boot

Om ett relä, en knapp eller annan kringelektronik drar dessa pinnar åt fel håll får man typiska symptom som:
reläet drar direkt vid inkoppling
ESP:n bootar inte
ESP:n hamnar i programmeringsläge

Även om knappen “bara är en ingång” kan den alltså störa booten.

GPIO1 och GPIO3 (TX/RX) bör också undvikas eftersom de används för seriell kommunikation vid uppstart och kan ge oönskade pulser.

Rekommenderade GPIO (säkra val)
Dessa GPIO påverkar inte bootläget och är stabila för både relä och knapp:
GPIO4
GPIO5
GPIO12
GPIO13
GPIO14
RadioDJ
Inlägg: 474
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Re: ESPhome programmering

Inlägg av RadioDJ »

@CPMS
Då förstår jag varför reläet drag.
Inget att göra åt mer än att byta pinne.
Tack än en gång för all hjälp.
Skriv svar