waterius
waterius copied to clipboard
Поддержка OTA
Сервер есть. Помогите разобраться =)
https://github.com/esp8266/Arduino/blob/13f374666dfb0225167640bf695e4a943dc55b51/libraries/ESP8266httpUpdate/examples/httpUpdateSecure/httpUpdateSecure.ino
Вроде понятно, как сделать. А нужно ли?
Скомпилировал пример, работает: https://gist.github.com/dontsovcmc/a5ac114fca763217709318e7ce6ee84a Пример сервера https://gist.github.com/dontsovcmc/a60009697cf78cd36f6dd52122cf1bad
Можно размещать обновления на гитхабе: github.com/repository/X/firmware.bin, X - номер следующей версии и железка будет обращаться к серверу.
С HTTPS, с Blink и JSON столкнулся с тем, что на OTA апдейты не хватало места, пришлось заменить флешки ESP8266 4Мбит на 32Мбит (25Q32FVSIG)
Упс... н - наивность? =) я тут хочу https+ota+json в ESP-01 запихнуть... Там BearSSL сделали, кстати.
BearSSL+Blynk+ota+json PROGRAM: [===== ] 45.7% (used 476928 bytes from 1044464 bytes)
на NodeMCU работает:
--- Miniterm on /dev/tty.SLAB_USBtoUART 115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
000:00:00:38:479 ERROR (BLK) : connect error
Waiting for NTP time sync: .
Current time: Tue Feb 26 05:08:14 2019
000:00:00:39:187 NOTICE (TLS) : {"key":"","version":0,"version_esp":"0.5.3","boot":0,"resets":0,"voltage":0,"good":0,"ch0":0,"ch1":0,"delta0":0,"delta1":0}
000:00:00:39:191 NOTICE (TLS) : Connecting to 192.168.1.10 port 5000
000:00:00:40:611 NOTICE (TLS) : connected
000:00:00:40:665 NOTICE (TLS) :
000:00:00:40:670 NOTICE (TLS) : finished
000:00:00:40:671 NOTICE (TLS) : send data ok
000:00:00:40:672 NOTICE (CFG) : Config stored OK
000:00:00:40:673 NOTICE (OTA) : Host: 192.168.1.10 port: 5000 path: /update
000:00:00:42:594 NOTICE (ESP) : Going to sleep
000:00:00:42:595 ERROR (I2C) : end error:2
{l␀$ܟ|␀�l�|␃␄␌␌�␌$�␄b|��␂�␒�r�B�␌"��no�␀$no���␌c␜p��l{l{lp�n�␐␃␄␌�␌$␌��␄␌␄c␄n�|␃$�␄␌�c��No�␂l��␀$`␂�␛␒no␌$`␂␎␃os���o␌␄#␄�␎l␏r��n␄␌b␌�␎l�␛$��d���␒� ␂��n�␂000:00:00:00:060 NOTICE (ESP) : Booted
000:00:00:00:061 NOTICE (CFG) : CRC ok
000:00:00:00:062 NOTICE (CFG) : email=, hostname=blynk-cloud.com
000:00:00:00:064 NOTICE (CFG) : hostname_json=192.168.1.10
000:00:00:00:069 NOTICE (CFG) : channel0_start=0.00, impules0_start=0, factor=10
000:00:00:00:077 NOTICE (CFG) : channel1_start=0.00, impules1_start=0
000:00:00:00:083 NOTICE (ESP) : new impulses=0 0
000:00:00:00:088 NOTICE (ESP) : new values=0.00 0.00
000:00:00:00:093 NOTICE (WIF) : Starting Wifi
000:00:00:00:101 NOTICE (WIF) : Wifi status: 6
000:00:00:00:302 NOTICE (WIF) : Wifi status: 6
000:00:00:00:503 NOTICE (WIF) : Wifi status: 6
000:00:00:00:704 NOTICE (WIF) : Wifi status: 6
000:00:00:00:904 NOTICE (WIF) : Connected, got IP address: 192.168.1.50
000:00:00:05:906 ERROR (BLK) : connect error
Waiting for NTP time sync: .
Current time: Tue Feb 26 05:08:32 2019
000:00:00:06:614 NOTICE (TLS) : {"key":"","version":0,"version_esp":"0.5.3","boot":0,"resets":0,"voltage":0,"good":0,"ch0":0,"ch1":0,"delta0":0,"delta1":0}
000:00:00:06:618 NOTICE (TLS) : Connecting to 192.168.1.10 port 5000
000:00:00:08:080 NOTICE (TLS) : connected
000:00:00:08:139 NOTICE (TLS) : finished
000:00:00:08:139 NOTICE (TLS) : send data ok
000:00:00:08:140 NOTICE (CFG) : Config stored OK
000:00:00:08:141 NOTICE (OTA) : Host: 192.168.1.10 port: 5000 path: /update
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v951aeffa
@cp:0
ld
Version: 2
Connecting to don
.
WiFi ok
IP address:
192.168.1.50
Waiting for NTP time sync: .
Current time: Tue Feb 26 05:09:08 2019
MFLN supported: no
HTTP_UPDATE_NO_UPDATES
CONT stack used: 2220
-------
ESP-01
[httpUpdate] ESP8266 info:
[httpUpdate] - free Space: 319488
[httpUpdate] - current Sketch Size: 444656
(((
Надо бы оптимизировать память.. Под скетч оказывается всего 761840 байт (у меня EPS с 1Мбайтом) Значит прошивку надо уместить в 380920 байт
Сейчас: JSON 14k Blynk 10k WiFiManager 60k логгирование 15k
- OTA
- BearSSL
Оптимизация вещь похвальная и нужная, но быстрее перепаять флешку - 70 рублей и 5 минут делов:)
Оптимизация вещь похвальная и нужная, но быстрее перепаять флешку - 70 рублей и 5 минут делов:)
Ага =)
В attiny85 надо добавить команду "подожди, я обновлюсь" :/
Тут еще такой момент, после обновления ESP перезагрузится и спросит причину загрузки - т.е. добавить еще один режим #define UPGRADE_MODE №
Да и вообще с ОТА много проблем как выясняется, иногда, обычно при существенном изменении кода и размера прошивки, после обновления кораптятся настройки. Не плохо бы их сохранять куда-нибудь (spiffs ?) перед обновлением и восстанавливать после обновления.
ESP ничего не спрашивает. Причину перезагрузки ESP можно добавить в отсылаемые данные для диагностики.
Чтобы настройки не изменялись, надо знать распределение памяти =(. Сейчас настройки в eeprom храняться. Но его мало для нескольких сертификатов =(.
Вот, говорят, хороший чип W25Q64FV
Я перепаивал ESP-01 на 32мбит flash вот такой: https://www.aliexpress.com/item/New-and-original-W25Q32BVSSIG-W25Q32BVSIG-W25Q32-25Q32/2042981414.html?spm=a2g0s.9042311.0.0.27424c4dogSpZx
Единственная проблема - чип чуть больше оригинального, приходится поджимать лапы.
Наверно, стоит ещё подумать об апдейте прошивки в тиньке? Нашёл вот такую либу для этих целей: https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266AVRISP
@popsodav о, спасибо! мне кажется усилия по написанию прошивки под ESP32 эквиваленты, придумыванию как esp01 прошивать attiny будет. библиотека верная.