ESPHome restore from flash
- rejze69
- Pokročilý
- Příspěvky: 338
- Registrován: 01. říjen 2022, 16:21
- Dal poděkování: 22 poděkování
- Dostal poděkování: 16 poděkování
ESPHome restore from flash
Ahoj lidi.
Mám ESP32 a už druhý den procházím net jak ukládat hodnoty do flash a obnovit je po restartu.
Nemáte někdo s tímto zkušenost? Jde o to aby si to např. pamatovalo poslední stav relé a dokázalo to uložit hodnoty pro tlakový spínač. Tedy min - max hodnotu, mezi kterými to bude spínat.
Zatím zkouším poslední stav spínače. udělal jsem si globální proměnnou, ale potom už narážím na to, že žádný z příkazů které existují není platný.
restore_from_flash: atd
Nepotřebuji tam ukládat žádné sensory. Pouze konfigurační parametry, které si nastavím v HA frontendu. Nechci to zároveň dávat natvrdo do kódu.
Díky
Mám ESP32 a už druhý den procházím net jak ukládat hodnoty do flash a obnovit je po restartu.
Nemáte někdo s tímto zkušenost? Jde o to aby si to např. pamatovalo poslední stav relé a dokázalo to uložit hodnoty pro tlakový spínač. Tedy min - max hodnotu, mezi kterými to bude spínat.
Zatím zkouším poslední stav spínače. udělal jsem si globální proměnnou, ale potom už narážím na to, že žádný z příkazů které existují není platný.
restore_from_flash: atd
Nepotřebuji tam ukládat žádné sensory. Pouze konfigurační parametry, které si nastavím v HA frontendu. Nechci to zároveň dávat natvrdo do kódu.
Díky
NTB Acer aspire ONE N4000, 4G RAM, 64G emmc. Testovací Asrock BeeBox N3000 atom. 4GB Ram, SSD128
- tiimsvk
- Dárce - Donátor
- Příspěvky: 835
- Registrován: 06. květen 2021, 07:03
- Dal poděkování: 75 poděkování
- Dostal poděkování: 65 poděkování
Re: ESPHome restore from flash
Podľa týchto nastavení si nepamätá posledné nastavenie polohy relé?
"restore_mode"
https://esphome.io/components/switch/index.html
"restore_mode"
https://esphome.io/components/switch/index.html
- rejze69
- Pokročilý
- Příspěvky: 338
- Registrován: 01. říjen 2022, 16:21
- Dal poděkování: 22 poděkování
- Dostal poděkování: 16 poděkování
Re: ESPHome restore from flash
Díky,
To nakonec funguje, akorát mi to po vepsání restore_mode: jako vše předtím podtrhlo a v hintu bylo, že taková komponenta neexistuje. Až když za to napíšu volbu, tak to je dobrý. Jenže jak to má člověk vědět.
Tak teď co s těmi čísly? tam tahle volba není. Pouze u number template je restore_value, ale to ukládá do RTC a to nepřežije výpadek napájení.
To nakonec funguje, akorát mi to po vepsání restore_mode: jako vše předtím podtrhlo a v hintu bylo, že taková komponenta neexistuje. Až když za to napíšu volbu, tak to je dobrý. Jenže jak to má člověk vědět.
Tak teď co s těmi čísly? tam tahle volba není. Pouze u number template je restore_value, ale to ukládá do RTC a to nepřežije výpadek napájení.
NTB Acer aspire ONE N4000, 4G RAM, 64G emmc. Testovací Asrock BeeBox N3000 atom. 4GB Ram, SSD128
- rejze69
- Pokročilý
- Příspěvky: 338
- Registrován: 01. říjen 2022, 16:21
- Dal poděkování: 22 poděkování
- Dostal poděkování: 16 poděkování
Re: ESPHome restore from flash
Ahoj,
Po x hodinách hledání jak ukládat a číst globální proměnné a testování těch střepů co o tom existují nastupuje taková frustrace, že to nechci týden vidět.
Bohužel dokud nerozjedu tohle, nemá smysl s tím pokračovat, protože to nebude autonomní a tedy k ničemu. Zlaté Arduino s EEPROM.
Kód nyní s různými zakomentovanými testy vypadá takto:
Po x hodinách hledání jak ukládat a číst globální proměnné a testování těch střepů co o tom existují nastupuje taková frustrace, že to nechci týden vidět.
Bohužel dokud nerozjedu tohle, nemá smysl s tím pokračovat, protože to nebude autonomní a tedy k ničemu. Zlaté Arduino s EEPROM.
Kód nyní s různými zakomentovanými testy vypadá takto:
Kód: Vybrat vše
esphome:
name: test
friendly_name: test
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
#external_components:
# - source: github://martgras/esphome@nvs-fix
# components: [ esp32]
preferences:
flash_write_interval: 1min
# Enable Home Assistant API
api:
encryption:
key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ota:
password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
web_server:
port: 80
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Test Fallback Hotspot"
password: "xxxxxxxxxxxxx"
captive_portal:
globals:
- id: button_relay_state
type: bool
restore_value: yes
sensor:
- platform: pulse_counter
pin: GPIO34
name: "Pulse Counter"
update_interval: 5s
filters:
- lambda: return (x / 300.0);
unit_of_measurement: "L/min"
total:
unit_of_measurement: 'litrů'
name: 'celkova spotreba vody'
filters:
- multiply: 0.03 # (1/30 pulses na 0.1L)
binary_sensor:
- platform: gpio
pin:
number: 13
mode: INPUT_PULLUP
inverted: True
name: "Testovací tlačítko"
on_press:
then:
- switch.template.publish:
id: button_relay
state: !lambda |-
if (id(button_relay).state) {
return false;
} else {
return true;
}
# if (id(button_relay_state).state) {
# return false;
# } else {
# return true;
# }
switch:
- platform: template
name: "Relay"
id: button_relay
optimistic: true
restore_state: on
restore_mode: RESTORE_DEFAULT_OFF
on_turn_on:
then:
- switch.turn_on:
id: rele_1
on_turn_off:
then:
- switch.turn_off:
id: rele_1
- platform: gpio
pin: 33
name: "Relé 1"
id: rele_1
- platform: restart
name: "Test Restart"
NTB Acer aspire ONE N4000, 4G RAM, 64G emmc. Testovací Asrock BeeBox N3000 atom. 4GB Ram, SSD128
- tiimsvk
- Dárce - Donátor
- Příspěvky: 835
- Registrován: 06. květen 2021, 07:03
- Dal poděkování: 75 poděkování
- Dostal poděkování: 65 poděkování
- rejze69
- Pokročilý
- Příspěvky: 338
- Registrován: 01. říjen 2022, 16:21
- Dal poděkování: 22 poděkování
- Dostal poděkování: 16 poděkování
Re: ESPHome restore from flash
Ahoj
Chtěl jsem pro začátek zkusit jenom bool proměnnou a použít ji do toho spínače a nahradit tu funkci co jsi mi poradil prve. Vlastně tedy místo toho restore_mode tu hodnotu uložit do proměnné.
Chtěl jsem pro začátek zkusit jenom bool proměnnou a použít ji do toho spínače a nahradit tu funkci co jsi mi poradil prve. Vlastně tedy místo toho restore_mode tu hodnotu uložit do proměnné.
NTB Acer aspire ONE N4000, 4G RAM, 64G emmc. Testovací Asrock BeeBox N3000 atom. 4GB Ram, SSD128
- tiimsvk
- Dárce - Donátor
- Příspěvky: 835
- Registrován: 06. květen 2021, 07:03
- Dal poděkování: 75 poděkování
- Dostal poděkování: 65 poděkování
Re: ESPHome restore from flash
Nemalo by to byt v tomto zmysle?
Nemam to odskusane lebo to pisem na mobile
Kód: Vybrat vše
on_press:
then:
- globals.set:
id: button_relay_state
value: !lambda 'return id(button_relay).state;
- rejze69
- Pokročilý
- Příspěvky: 338
- Registrován: 01. říjen 2022, 16:21
- Dal poděkování: 22 poděkování
- Dostal poděkování: 16 poděkování
Re: ESPHome restore from flash
Dík.
To vypadá pravděpodobně.
Zítra to zkusím.
To vypadá pravděpodobně.
Zítra to zkusím.
NTB Acer aspire ONE N4000, 4G RAM, 64G emmc. Testovací Asrock BeeBox N3000 atom. 4GB Ram, SSD128
- rejze69
- Pokročilý
- Příspěvky: 338
- Registrován: 01. říjen 2022, 16:21
- Dal poděkování: 22 poděkování
- Dostal poděkování: 16 poděkování
Re: ESPHome restore from flash
Zdravím,
tak jsem to zkusil, ale nejspíš ten přepínač není vhodný.
Zkusím to tedy podle tohohle
tak jsem to zkusil, ale nejspíš ten přepínač není vhodný.
Zkusím to tedy podle tohohle
Kód: Vybrat vše
esphome:
name: laadpaal-dev
on_boot:
priority: 700 # I have tried various values between -10 and 800
then:
- pulse_counter.set_total_pulses:
id: dev_counter
value: !lambda return id(dev_total_pulses);
globals:
- id: dev_total_pulses
type: int
restore_value: yes
esp32:
board: nodemcu-32s
framework:
type: arduino
preferences:
flash_write_interval: 60s
sensor:
- platform: pulse_counter
use_pcnt: True
pin: 5
icon: "mdi:flash"
name: "DEV Laadpaal Raw counter"
id: dev_counter
total:
id: dev_counter_total
name: 'DEV Laadpaal Raw Total'
on_value:
then:
- globals.set:
id: dev_total_pulses
value: !lambda 'return x;'
NTB Acer aspire ONE N4000, 4G RAM, 64G emmc. Testovací Asrock BeeBox N3000 atom. 4GB Ram, SSD128
- rejze69
- Pokročilý
- Příspěvky: 338
- Registrován: 01. říjen 2022, 16:21
- Dal poděkování: 22 poděkování
- Dostal poděkování: 16 poděkování
Re: ESPHome restore from flash
Ahoj,
Tak jsem to zkusil podle všeho co jsem našel. Nyní to vypadá takto:
V logu vidím, že to provádí zápis do flash podle nastavení jednou za minutu, ale po rebootu je to stejně vynulované.
Navíc tam je náhodně pár pulsů. Třeba 3 nebo 5. Nevím jak zjistit, jestli to blbosti ukládá, nebo načte on_boot.
Zkoušel jsem měnit typ proměnné, a způsoby ukládání do global, ale to pak nešlo ani zkompilovat.
Co dál?
Tak jsem to zkusil podle všeho co jsem našel. Nyní to vypadá takto:
Kód: Vybrat vše
esphome:
name: test
friendly_name: test
on_boot:
priority: 600
then:
- pulse_counter.set_total_pulses:
id: dev_counter
value: !lambda return id(dev_total_pulses);
globals:
- id: dev_total_pulses
type: int
restore_value: true
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
preferences:
flash_write_interval: 1min
# Enable Home Assistant API
api:
encryption:
key: "XXXXXXXXXXXXXXXXXXXXX"
ota:
password: "xxxxxxxxxxxxxxxxxxxxxxxxxx"
web_server:
port: 80
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Test Fallback Hotspot"
password: "yyyyyyyyyyyyyyy"
captive_portal:
sensor:
- platform: pulse_counter
pin: GPIO34
name: "Pulse Counter"
id: dev_counter
update_interval: 5s
filters:
- lambda: return (x / 300.0);
unit_of_measurement: "L/min"
on_value:
then:
- globals.set:
id: dev_total_pulses
value: !lambda 'return int(x);'
total:
unit_of_measurement: 'litrů'
name: 'celkova spotreba vody'
filters:
- multiply: 0.003 # (1/30 pulses na 0.1L)
Navíc tam je náhodně pár pulsů. Třeba 3 nebo 5. Nevím jak zjistit, jestli to blbosti ukládá, nebo načte on_boot.
Zkoušel jsem měnit typ proměnné, a způsoby ukládání do global, ale to pak nešlo ani zkompilovat.
Co dál?
NTB Acer aspire ONE N4000, 4G RAM, 64G emmc. Testovací Asrock BeeBox N3000 atom. 4GB Ram, SSD128