Jednym z częściej powtarzających się pytań/problemów, dotyczących ESPHome jest to, że wprowadzone zmiany – np. stan przełącznika, ustawiona temperatura termostatu – nie są zapamiętywane po ponownym uruchomieniu urządzenia. W takiej sytuacji najczęściej chodzi o ESPHome uruchomione na układzie ESP8266, gdzie faktycznie, w domyślnej konfiguracji zmiany nie są zapisywane w pamięci urządzenia (w przypadku ESP32 problem ten nie występuje, bo tu są domyślnie zapisywane). Na szczęście można to łatwo zmienić…
Zapamiętywanie ustawień w ESPHome na ESP8266
Nie wiem, z czego wynika taka decyzja twórców ESPHome, ale pewnie z tego, że układy ESP8266 trochę z przypadku stały się tym, czym się stały, w przeciwieństwie do układów ESP32, które od razu były tworzone z myślą o pracy jako (mikro)kontrolery. W każdym razie jest, jak jest i jak już na wstępie wspomniałem – w przypadku układów ESP8266, oprogramowanie ESPHome domyślnie nie zapisuje ustawień w pamięci, a więc po każdym restarcie urządzenia wszystko wraca do domyślnych wartości (stanów).
Można jednak to zmienić, za pomocą opcji „restore_from_flash”:
restore_from_flash (Optional, boolean): Whether to store some persistent preferences in flash memory. Defaults to false.
Wystarczy w sekcji, gdzie ustawiamy typ płytki dodać parametr „restore_from_flash” z wartością „true”:
esp8266:
board: nodemcuv2
restore_from_flash: true
Można też zmienić co jaki czas wartości i stany, mają być zapisywane w pamięci:
flash_write_interval (Optional, Time): Customize the frequency in which data is flushed to the flash. This setting helps to prevent rapid changes to a component from being quickly written to the flash and wearing it out. Defaults to 1min.
W takim przypadku dodajemy kod:
preferences:
flash_write_interval: 10min
Mamy też opcje, pozwalające łatwo ustawić, czy np. stan danego przełącznika ma być przywracany, a jak tak, to na jakich zasadach, do czego służy parametr „restore_mode”:
- RESTORE_DEFAULT_OFF: Próbuje przywrócić, jak się nie uda, to ustawia OFF
- RESTORE_DEFAULT_ON: Próbuje przywrócić, jak się nie uda, to ustawia ON
- RESTORE_INVERTED_DEFAULT_OFF: Próbuje przywrócić stan odwrotny od zapisanego, jak się nie uda, to ustawia OFF
- RESTORE_INVERTED_DEFAULT_ON: Próbuje przywrócić stan odwrotny od zapisanego, jak się nie uda, to ustawia OFF
- ALWAYS_OFF: Zawsze ustawia OFF (domyślna opcja)
- ALWAYS_ON: Zawsze ustawia ON
- DISABLED: Nie robi nic
Przykładowy kod z użyciem tej opcji może wyglądać tak:
switch:
- platform: gpio
[...]
restore_mode: RESTORE_DEFAULT_OFF
I jest to bardzo przydatna opcja, bo pozwala z góry zaprogramować układ, by w razie np. problemów z przywróceniem ustawienia z pamięci, dany przełącznik został ustawiony tak, jak potrzebujemy. Sam często korzystam z opcji domyślnej, czyli „zawsze OFF” np. w przypadku wszelkiej maści termostatów (sterownik ogrzewania, czy sterownik piwnej lodówki), i opcji „zawsze ON” w przypadku np. dzwonka do drzwi…


- Wtyczka BackWPup w wersji 5.x to doskonały przykład, jak wylać dziecko z kąpielą i z relatywnie świetnego narzędzia zrobić właściwie bezwartościowego gniota - 1970-01-01
- Testowy przelew w Bitcoinach z najniższą prowizją, czyli krótka historia o tym, jak zamroziłem BTC na (ponad) rok - 1970-01-01
- Nowy system kopii zapasowych w Home Assistant 2025.1 to zapewne krok w dobrym kierunku, ale zdecydowanie przedwczesny - 1970-01-01