ESPhome programmering
ESPhome programmering
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.
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.
Re: ESPhome programmering
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
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.
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_1Nä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.
Re: ESPhome programmering
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.
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.
Re: ESPhome programmering
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_1Re: ESPhome programmering
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 ========================
# ==========================================================
Re: ESPhome programmering
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?
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?
- Swech
- EF Sponsor
- Inlägg: 4764
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: ESPhome programmering
Visar du hur du kopplat så blir det enklare att föreslå åtgärdJag har en ESP8266 som jag har kopplat ett relä och en knapp till.
Swech
Re: ESPhome programmering
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
Re: ESPhome programmering
@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.
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.
