waterius icon indicating copy to clipboard operation
waterius copied to clipboard

Поддержка OTA

Open dontsovcmc opened this issue 6 years ago • 16 comments

Сервер есть. Помогите разобраться =)

dontsovcmc avatar Oct 19 '18 21:10 dontsovcmc

https://github.com/esp8266/Arduino/blob/13f374666dfb0225167640bf695e4a943dc55b51/libraries/ESP8266httpUpdate/examples/httpUpdateSecure/httpUpdateSecure.ino

dontsovcmc avatar Nov 05 '18 00:11 dontsovcmc

Вроде понятно, как сделать. А нужно ли?

dontsovcmc avatar Nov 15 '18 21:11 dontsovcmc

Скомпилировал пример, работает: https://gist.github.com/dontsovcmc/a5ac114fca763217709318e7ce6ee84a Пример сервера https://gist.github.com/dontsovcmc/a60009697cf78cd36f6dd52122cf1bad

Можно размещать обновления на гитхабе: github.com/repository/X/firmware.bin, X - номер следующей версии и железка будет обращаться к серверу.

dontsovcmc avatar Feb 25 '19 10:02 dontsovcmc

С HTTPS, с Blink и JSON столкнулся с тем, что на OTA апдейты не хватало места, пришлось заменить флешки ESP8266 4Мбит на 32Мбит (25Q32FVSIG)

OloloevReal avatar Feb 25 '19 19:02 OloloevReal

Упс... н - наивность? =) я тут хочу 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
-------

dontsovcmc avatar Feb 26 '19 00:02 dontsovcmc

ESP-01

[httpUpdate] ESP8266 info:
[httpUpdate]  - free Space: 319488
[httpUpdate]  - current Sketch Size: 444656

(((

dontsovcmc avatar Feb 26 '19 07:02 dontsovcmc

Надо бы оптимизировать память.. Под скетч оказывается всего 761840 байт (у меня EPS с 1Мбайтом) Значит прошивку надо уместить в 380920 байт

Сейчас: JSON 14k Blynk 10k WiFiManager 60k логгирование 15k

  • OTA
  • BearSSL

dontsovcmc avatar Feb 26 '19 14:02 dontsovcmc

Оптимизация вещь похвальная и нужная, но быстрее перепаять флешку - 70 рублей и 5 минут делов:)

OloloevReal avatar Feb 26 '19 15:02 OloloevReal

Оптимизация вещь похвальная и нужная, но быстрее перепаять флешку - 70 рублей и 5 минут делов:)

Ага =)

dontsovcmc avatar Feb 26 '19 15:02 dontsovcmc

В attiny85 надо добавить команду "подожди, я обновлюсь" :/

dontsovcmc avatar Feb 28 '19 21:02 dontsovcmc

Тут еще такой момент, после обновления ESP перезагрузится и спросит причину загрузки - т.е. добавить еще один режим #define UPGRADE_MODE №

OloloevReal avatar Feb 28 '19 22:02 OloloevReal

Да и вообще с ОТА много проблем как выясняется, иногда, обычно при существенном изменении кода и размера прошивки, после обновления кораптятся настройки. Не плохо бы их сохранять куда-нибудь (spiffs ?) перед обновлением и восстанавливать после обновления.

OloloevReal avatar Feb 28 '19 23:02 OloloevReal

ESP ничего не спрашивает. Причину перезагрузки ESP можно добавить в отсылаемые данные для диагностики.

Чтобы настройки не изменялись, надо знать распределение памяти =(. Сейчас настройки в eeprom храняться. Но его мало для нескольких сертификатов =(.

dontsovcmc avatar Mar 01 '19 00:03 dontsovcmc

Вот, говорят, хороший чип W25Q64FV

dontsovcmc avatar Mar 26 '19 22:03 dontsovcmc

Я перепаивал 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 avatar May 14 '19 05:05 popsodav

@popsodav о, спасибо! мне кажется усилия по написанию прошивки под ESP32 эквиваленты, придумыванию как esp01 прошивать attiny будет. библиотека верная.

dontsovcmc avatar May 14 '19 07:05 dontsovcmc