Ja mam dość roboczy kod ale działa poprawnie.
Ja mając podobny programator, musiałem dodać microswitch aby przełączyć ESP01 w tryb programowania, inaczej nie chciał mi się ESP programować.
substitutions:
# Modify variables based on your settings
hostname: "heart"
devicename: heart light
esphome:
name: esp-01s-1-channel-relay
friendly_name: ESP-01S 1 Channel Relay
esp8266:
board: esp01_1m
# Enable logging
logger:
baud_rate: 115200
# Enable Home Assistant API
api:
encryption:
key: "6agqM3Qguuz10IXv/HLwyaeziKiSPHTVNM+lyHVYBk8="
ota:
- platform: esphome
password: "c98c9d8323b11d333e50d3a6c3cea6e9"
wifi:
ssid:
password:
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp-01S-1-Channel-Relay"
password: "uwBdxjghlHW6"
switch:
- platform: gpio
pin: GPIO0
name: "Heart switch"
inverted: true
# The following can be omitted
- platform: restart
name: ${devicename} restart
sensor:
- platform: wifi_signal
name: ${devicename} wifi signal
update_interval: 600s
# human readable uptime sensor output to the text sensor above
- platform: uptime
name: ${devicename} Uptime in Days
id: uptime_sensor_days
update_interval: 60s
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor_days).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? String(days) + "d " : "") +
(hours ? String(hours) + "h " : "") +
(minutes ? String(minutes) + "m " : "") +
(String(seconds) + "s")
).c_str();
time:
- platform: homeassistant
id: homeassistant_time
# Text sensors with general information.
text_sensor:
# Expose ESPHome version as sensor.
- platform: version
name: $devicename Version
# Expose WiFi information as sensors.
- platform: wifi_info
ip_address:
name: $devicename IP
bssid:
name: $devicename BSSID
# human readable update text sensor from sensor:uptime
- platform: template
name: Uptime Human Readable
id: uptime_human
icon: mdi:clock-start
Istotnie większość tych “programatorów” realnie nie jest żadnymi programatorami (to są zwykłe mostki UART) i bezpośrednio nie nadaje się do programowania, można to łatwo obejść zwierając np. pęsetą GPIO0 do masy i przytrzymując to zwarcie podczas wciskania przycisku resetu, ale oczywiście wygodniej jest dolutować odpowiedni przycisk.
ten twój YAML ma przestarzałą konfigurację w jednym z kluczowych miejsc więc z pewnością nie da się go skompilować we współczesnej wersji ESPHome compilera (a nawet gdyby się dało, bo masz jakąś starszą wersję? to zaraz nie będziesz miał działającego OTA, więc będziesz skazany na programowanie przez USB zamiast “przez powietrze”)
nie musiałeś też ukrywać tych autogenerowanych haseł (tu wrzuciłem jakiekolwiek prawdziwe dla czytelności kodu)