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…
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01