Мазмұны:
- 1 -қадам: Сізге не қажет
- 2 -қадам: екілік бағдарламалық қамтамасыз етуді сақтау үшін репозиторий жасаңыз
- 3 -қадам: екілік файлдарды жасаңыз
- 4 -қадам: Сервер ағынын жасаңыз
- 5 -қадам: Сервер логикасын қосыңыз
- 6 -қадам: Жаңартуды сұрау үшін эскизге код қосыңыз
- 7 -қадам: Соңында, жаңартуды бастаңыз
Бейне: ESP8266 автоматты жаңарту серверін орнату: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Қазір көптеген адамдар үйде автоматтандыру жүйелері үшін ESP8266-ды әр түрлі формада қолданады (ESP-01S, Wemos D1, NodeMCU, Sonoff т.б.). Егер сіз өзіңіздің жеке кодыңызды жазсаңыз (мен сияқты), олардың әрқайсысын OTA арқылы (эфирде) бөлек жаңарту біраз жалықтырады.
Менің жеке жүйемде, мысалы, 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV және NodeMCU бар, олар жалпы кодтық базаны бөліседі, сондықтан мен қарапайым код жасаған кезде жаңартылатын 33 құрылғы. өзгерту.
Бірақ оңай жолы бар: «жаңарту сервері». Тамаша Arduino IDE + ESP8266 ядросында жұмыстың көп бөлігін орындауға арналған кітапхана бар (ESP8266httpUpdate), бірақ оны жұмыс жасау үшін сіз өзіңіздің серверіңізді қалай орнату керектігін білуіңіз керек.
Бұл нұсқаулық NODE-RED серверін қалай пайдалану керектігін көрсетеді, бірақ дәл сол логика сіз таңдаған кез келген сервер технологиясына қолданылады. Apache + PHP және т
1 -қадам: Сізге не қажет
- Arduino IDE
- ESP8266 ядросы
- 1M немесе одан да көп флэш -жады бар кез келген ESP8266 тақтасы
- Веб -сервер (тіпті қарапайым таңқурай Pi жасайды - мен қолданамын)
- (міндетті емес) mkspiffs құралы, егер сіз SPIFFS файлдық жүйенің кескінін автоматты түрде жаңартқыңыз келсе
2 -қадам: екілік бағдарламалық қамтамасыз етуді сақтау үшін репозиторий жасаңыз
Менің серверімде/home/pi/trucFirmware деп аталатын қалта бар, ол әр түрлі құрылғы бағдарламалары мен SPIFFS суреттерін сақтайды.
Мен әр аппараттық құралдың жеке екілік файлын сақтаймын (бірнеше #анықтамасы бар бір бастапқы файлдан) және жаңа шығарылым дайын болғанда, мен әрбір мақсатты құрылғы үшін Arduino IDE «құрастырылған екілік» мәзір командасын қолданамын. 5 түрлі жабдық түрі болса да, тек SPIFFS екілік файлдары бар: 1M және 4M нұсқасы - mkspiffs құралының көмегімен жасалған, өйткені барлық құрылғыларда 1M немесе 4M жарқылдығы бар.
3 -қадам: екілік файлдарды жасаңыз
Arduino IDE мәзірінің эскиз/экспорттық компиляторлық опциясын қолданып, жаңарту серверінен сұраған кезде құрылғыға жүктелетін микробағдарламаны жасаңыз.
Егер сізге SPIFFS екілік жүйесі қажет болса, mkspiffs құралын орнату қажет болады.
Сізде бар болса, SPIFFS екілік файлын құру қарапайым. Менде 1M нұсқасы үшін бір жолды пакеттік файл бар, ол нұсқа нөмірін параметр ретінде қабылдайды (%1)
mkspiffs -c data/ spiffs_%1_1M.bin
және 4M нұсқасы үшін басқасы:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c data/ spiffs_%1_4M.bin
Содан кейін мен барлық жинақталған екілік файлдарды және SPIFFS.binary файлдарын репозиторийге көшіремін
4 -қадам: Сервер ағынын жасаңыз
Мен NODE-RED қолданамын, бірақ қарапайым логика кез келген сервер технологиясында / тілінде бірдей болады.
а) ESP8266httpUpdate сұранысын тыңдайтын URL мекенжайын анықтаңыз. Менің raspberryPi serevr 192.168.1.4 нұсқасында және 1880 портында /жаңартылған жабдық түрімен жаңартылады. Егер мен Wemos D1 Mini үшін екілік файлды сұрағым келсе, URL келесі түрде аяқталады:
192.168.1.4:1880/update/d1_mini
b) Келесі логиканы басқару үшін код жасаңыз:
ESP8266: «Сәлеметсіз бе, мен a.b.c микробағдарламасының нұсқасымен жұмыс жасаймын, сізде жаңа нұсқасы бар ма?» Сервер: «Көруге рұқсат етіңіз … иә, менде a.b.d бар - міне келді …»
Егер жаңа нұсқасы болса, сервер оны http жауапында екілік деректердің жүктемесі ретінде жібереді. ESP8266httpUpdate класы екілік файлды жадқа көшірудің қиын бөлігін атқарады, микробағдарламаның жүктелу мекенжайын жаңа кодқа өзгертуге (қажет болған жағдайда) жаңа кодты іске қосу үшін құрылғыны қайта жүктеуге қарағанда.
Егер басқа нұсқасы болмаса, ол http 304 қатесімен жауап береді, онда тиімді түрде: «Менде сенің ештеңе жоқ», - деп жазылған және сіздің кодыңыз қалыпты түрде жұмыс істей береді.
5 -қадам: Сервер логикасын қосыңыз
Ағынның бірінші түйіні https://192.168.1.4:1880/update URL мекенжайына http сұранысын «тыңдайды», құрылғы түрі қосылған. Ол келесі JavaScript коды бар «Іздеу жолын құру» функция түйініне өтеді:
msg.type = msg.req.params.type; var h = msg.req.headers; msg.version = h [«x-esp8266-нұсқасы»];
msg.mode = h [«x-esp8266-режимі»];
if (msg.mode == «эскиз») {msg.payload = «/home/pi/trucFirmware/*. ino.»+msg.type+«. bin»; } else {var sz = h ['x-esp8266-chip-size']; msg.payload = «/home/pi/trucFirmware/spiffs _*_»+(sz/1048576)+«M.bin»; } хабарды қайтару;
Бұл жай ғана жұмыс істейтін sys функциясы үшін қойылмалы таңбамен тиісті жолды орнатады
ls - r
Содан кейін шығыс «Нұсқаларды салыстыру» функция түйініне беріледі:
var f = msg.payload.split («\ n») [0]; msg.filename = f;
егер (msg.mode == «эскиз») {
f = f.replace («/home/pi/trucFirmware/truc_», «»); f = f.replace («. ino.»+msg.type+«. bin», «»); } else {f = f.replace («/home/pi/trucFirmware/spiffs_», «»); f = f.резиденция (/_ / dM \.bin/, «»); }
if (msg.version <f) {
node.warn («жаңарту қажет»);
node.warn («қайтарылады»+msg.filename); хабарды қайтару; } node.warn («жаңарту жоқ»); msg.statusCode = 304; msg.payload = ;
хабарды қайтару;
Коммутатор түйіні 304 «жаңартудың қажеті жоқ» хабарламасының жіберілуін немесе нақты жаңа екілік файлдың қайтарылып, құрылғыға қайта жіберілуін қамтамасыз етеді.
6 -қадам: Жаңартуды сұрау үшін эскизге код қосыңыз
Нұсқаның келесі нөмірін көбейткенде ол автоматты түрде жаңартылуы үшін эскизде келесі код болуы керек:
#қосу
#анықтаңыз TRUC_VERSION «0_4_99»
#анықтаңыз SPIFFS_VERSION «0_5_0»
// THIS_DEVICE компиляция уақытының әр түрлі анықтамаларына байланысты ертерек орнатылады // олар ақырында hw түрін анықтайды, мысалы: #DEFine THIS_DEVICE «d1_mini» const char * updateUrl = «https://192.168.1.4:1880/update/» THIS_DEVICE; // бұл менің таңқурай Pi сервері, 1880-NODE-RED әдепкі порты // /жаңарту-бұл серверді «тыңдау» үшін таңдаған URL, содан кейін құрылғы түрі … bool actualUpdate (bool sketch = false) {Жолдық хабарлама; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (жалған); if (эскиз) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** Бұл - «бизнес» жасайтын жол}} else {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } if (ret! = HTTP_UPDATE_NO_UPDATES) {if (ret == HTTP_UPDATE_OK) {
Serial.printf («UPDATE SUCCEEDED»);
шындықты қайтару; } басқа {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf («Жаңарту сәтсіз аяқталды»);
}}} false қайтару; }
7 -қадам: Соңында, жаңартуды бастаңыз
Жүктеу кезінде немесе MQTT хабарламасына жауап ретінде (мен сияқты) келесі кодты іске қосыңыз:
if (_actualUpdate (true)) ESP.restart ();
// немесе SPIFFS үшін …
if (_actualUpdate (false)) ESP.restart ();
Құрылғы жаңартылады және серверден соңғы кодты қосады. Бұл мен үшін 33 құрылғыны қолмен жаңартудан әлдеқайда қарапайым!
Менің блогымда үйді автоматтандыру, IOT және ESP8266 бағдарламалау туралы көптеген пайдалы ақпаратты табуға болады
Ұсынылған:
MultiBoard орнату/орнату: 5 қадам
MultiBoard орнату/орнату: MultiBoard - бұл Windows компьютеріне бірнеше пернетақтаны қосуға болатын бағдарлама. Содан кейін осы пернетақталарды енгізуді қайта бағдарламалаңыз. Мысалы, белгілі бір перне басылғанда қосымшаны ашыңыз немесе AutoHotkeyscript іске қосыңыз. Github: https: // g
De La Carte TagTagTag орнату Nabaztag: tag / TagTagTag тақтасын Nabaztag -те орнату: тег: 23 қадам
De La Carte TagTagTag Pab Nabaztag: tag / TagTagTag тақтасын Nabaztag -те орнату: тег: (ағылшын тіліндегі нұсқасын төменде қараңыз) La carte TagTagTag a eté créée en 2018 lors de Maker Faire Paris pour faire renaitre les Nabaztag et les Nabaztag: tag . Қаржыландыру 2019 жылдың шілде айының соңына дейін жалғасады
Радио сағатын жаңарту - Bluetooth қондырғысын орнату: 6 қадам
Сағат радиосының модернизациясы-Bluetooth қондырғысын орнату: Бұл модификацияның екі бөлігі бар, олардың бірі-қолданыстағы сағат радиосы, екіншісі-ZTV-M01BT Shell & Bluetooth қолмен қосылатын MP3 декодер тақтасы. Қашықтан басқару " оған қосымша дыбыс күшейткіші қажет болады. Сағат
WAMP серверін орнату: 9 қадам
WAMP серверін орнату: Apache, PHP және MYSQL пайдалану үшін WAMP серверін қалай орнату керек. Бұл мектеп веб -сайттарын бұғаттау жүйесін жеңу үшін алдын ала тапсырма
Filezilla көмегімен FTP серверін орнату!: 7 қадам
Filezilla көмегімен FTP серверін орнату !: 1. FTP сервері дегеніміз не? 2. Неге мен оны жасағым келеді? 1. Файлдарды жіберу протоколы (FTP) - бұл бір компьютерден екіншісіне желі арқылы, мысалы, Интернет арқылы деректерді беру үшін қолданылатын желілік хаттама. FTP - бұл файлдарды жіберу протоколы