Orodha ya maudhui:

Sanidi ESP8266 Server ya Kusasisha Moja kwa Moja: Hatua 7
Sanidi ESP8266 Server ya Kusasisha Moja kwa Moja: Hatua 7

Video: Sanidi ESP8266 Server ya Kusasisha Moja kwa Moja: Hatua 7

Video: Sanidi ESP8266 Server ya Kusasisha Moja kwa Moja: Hatua 7
Video: BTT GTR v1.0/M5 v1.0 - Basics 2024, Novemba
Anonim
Sanidi Seva ya Kusasisha Moja kwa Moja ya ESP8266
Sanidi Seva ya Kusasisha Moja kwa Moja ya ESP8266

Watu wengi sasa wanatumia ESP8266 katika sura zake nyingi (ESP-01S, Wemos D1, NodeMCU, Sonoff n.k) kwa mifumo ya kiotomatiki ya nyumbani. Ukiandika nambari yako mwenyewe (kama mimi) kusasisha kila moja kando hata kupitia OTA (hewani) inachosha kidogo.

Mfumo wangu mwenyewe, kwa mfano una 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV na NodeMCU ambayo inashiriki msingi wa kawaida wa nambari, kwa hivyo hiyo ni vifaa 33 katika yote kusasisha ninapofanya nambari rahisi badilika.

Lakini kuna njia rahisi: "Sasisha seva". Msingi bora wa Arduino IDE + ESP8266 una maktaba ya kufanya kazi nyingi (ESP8266httpUpdate), lakini unahitaji kujua jinsi ya kuweka seva yako mwenyewe ili iweze kufanya kazi.

Hii inayoweza kufundishwa inakuonyesha jinsi ya kutumia seva ya NODE-RED, lakini mantiki hiyo hiyo inatumika kwa teknolojia yoyote ya seva unayochagua k.v. Apache + PHP nk

Hatua ya 1: Unachohitaji

  1. Arduino IDE
  2. Msingi wa ESP8266
  3. Bodi yoyote ya ESP8266 dev iliyo na 1M au RAM zaidi ya flash
  4. Seva ya Wavuti (hata Risiberi mnyenyekevu atafanya - Ndio ninayotumia)
  5. (hiari) mkspiffs chombo ikiwa unataka kusasisha kiotomatiki picha ya mfumo wa faili ya SPIFFS

Hatua ya 2: Unda Hifadhi ya Kushikilia Firmwares Binary

Unda Hifadhi ya Kushikilia Firmwares Binary
Unda Hifadhi ya Kushikilia Firmwares Binary

Kwenye seva yangu, nina folda inayoitwa / home / pi / trucFirmware ambayo inashikilia vifaa anuwai vya vifaa na picha za SPIFFS

Ninadumisha binary tofauti kwa kila aina ya maunzi (kutoka kwa faili moja ya chanzo na # mafafanuzi machache) na wakati toleo jipya liko tayari ninatumia amri ya menyu ya Arduino IDE "mchoro / Hamisha iliyokusanywa ya Kibinadamu" kwa kila kifaa lengwa. Kumbuka kuwa hata ingawa kuna aina 5 za vifaa, kuna binari mbili tu za SPIFFS: 1M na toleo la 4M - lililojengwa na zana ya mkspiffs - kwani vifaa vyote vina 1M au 4M flash.

Hatua ya 3: Unda Binaries

Kutumia mchoro wa chaguo la menyu ya Arduino IDE / Mchapishaji wa Usafirishaji ulioumbwa wa Usafirishaji, unda firmware ambayo itapakiwa kwenye kifaa ikiiomba kutoka kwa seva ya sasisho.

Ikiwa unahitaji binary ya SPIFFS utahitaji kusanikisha zana ya mkspiffs.

Mara tu unayo, kujenga binary ya SPIFFS ni rahisi. Nina faili ya kundi la mstari mmoja kwa toleo la 1M ambalo linachukua nambari ya toleo kama parameta (% 1)

mkspiffs -c data / spiffs_% 1_1M.bin

na nyingine kwa toleo la 4M:

mkspiffs -p 256 -b 8192 -s 0x0FB000 -c data / spiffs_% 1_4M.bin

Mimi kisha kunakili binaries zote zilizokusanywa na faili za SPIFFS.binary juu ya hazina

Hatua ya 4: Unda Mtiririko wa Seva

Unda Mtiririko wa Seva
Unda Mtiririko wa Seva

Ninatumia RED-RED, lakini mantiki rahisi itakuwa sawa kwenye teknolojia / lugha yoyote ya seva.

a) Fafanua url ambayo itasikiliza ombi la ESP8266httpUpdate. My raspberryPi serevr iko mnamo 192.168.1.4 na inasikiliza kwenye bandari ya 1880 ya / kusasisha na aina ya vifaa vilivyowekwa. Kwa hivyo ikiwa nitaomba binary kwa Wemos D1 Mini, url inaishia kama:

192.168.1.4:1880/update/d1_mini

b) Unda nambari ya kushughulikia mantiki ifuatayo:

ESP8266: "Hi, ninaendesha toleo la firmware a.b.c, unayo toleo jipya zaidi?" Seva: "Acha nione… ah ndio nina a.b.d - inakuja …"

Ikiwa toleo jipya zaidi lipo seva huituma kama mzigo wa data ya binary kwenye jibu la http. Darasa la ESP8266httpUpdate hufanya sehemu ngumu ya kunakili binary kwenye kumbukumbu, kubadilisha anwani ya boot ya firmware kwa nambari mpya kuliko (ikiwa imeombwa) kuwasha upya kifaa ili kuendesha nambari mpya.

Ikiwa kwa upande mwingine hakuna toleo la juu zaidi, linajibu kwa kosa la http 304 ambalo linasema kwa ufanisi: "Sina chochote kwako" na nambari yako inaendelea kuendeshwa kama kawaida.

Hatua ya 5: Ongeza Logic ya Seva

Node ya kwanza katika mtiririko "husikiliza" kwa ombi la http kwa url https://192.168.1.4: 1880 / sasisha na aina ya kifaa kilichoongezwa. Inapita hii kwenda kwa "Tengeneza njia ya utaftaji" node ya kazi ambayo ina nambari ifuatayo ya javascript:

aina ya msg.reype = msg.req.params.type; var h = msg.req.headers; msg.version = h ["x-esp8266-toleo"];

msg.mode = h ["x-esp8266-mode"];

ikiwa (msg.mode == "sketch") {msg.payload = "/ home / pi / trucFirmware / *. ino." + msg.type + ". bin"; } mwingine {var sz = h ['x-esp8266-chip-size']; msg.payload = "/ home / pi / trucFirmware / spiffs _ * _" + (sz / 1048576) + "M.bin"; } kurudi msg;

Hii inaweka njia inayofaa na kadi ya mwitu kwa kazi ya sys inayofuata, ambayo inaendesha tu

ls - r

Pato hulishwa kwa nodi ya kazi ya "Linganisha matoleo":

var f = msg.payload.split ("\ n") [0]; msg.filename = f;

ikiwa (msg.mode == "mchoro") {

f = f. mahali ("/ home / pi / trucFirmware / truc_", ""); f = f. mahali (". ino." + msg.type + ". bin", ""); } mwingine {f = f. mahali ("/ home / pi / trucFirmware / spiffs_", ""); f = f. mahali (/ _ / dM \.bin /, ""); }

ikiwa (msg.version <f) {

node.onya ("kuboresha inahitajika");

node.warn ("itarudi" + msg.filename); kurudi msg; } nodi.onya ("hakuna sasisho"); Msimbo wa Hali = 304; msg.payload = ;

kurudi msg;

Node ya kubadili kisha inahakikisha kuwa ujumbe 304 "hakuna sasisho linalohitajika" unatumwa au binary mpya halisi inarejeshwa na kurudishwa kwa kifaa.

Hatua ya 6: Ongeza Nambari kwenye Mchoro ili Uombe Sasisho

Mchoro unahitaji kuingiza nambari ifuatayo ndani yake ili iweze kusasisha kiatomati wakati ujao utakapoongeza nambari ya toleo:

# pamoja

#fafanua TRUC_VERSION "0_4_99"

#fafanua SPIFFS_VERSION "0_5_0"

// THIS_DEVICE imewekwa mapema kulingana na anuwai ya kukusanya-wakati // ambazo hatimaye hufafanua aina ya hw, n.k. #fafanua HII_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // hii ni seva yangu ya Risiberi Pi, 1880 ni bandari ya NODE-RED chaguo-msingi // / sasisho ni url niliyochagua kwa seva "kuisikiliza", ikifuatiwa na aina ya kifaa… bool actualUpdate (bool sketch = false) {String msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (uwongo); ikiwa (mchoro) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** Huu ndio mstari ambao "hufanya biashara"} mwingine {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } ikiwa (ret! = HTTP_UPDATE_NO_UPDATES) {ikiwa (ret == HTTP_UPDATE_OK) {

Serial.printf ("SASISHA KUFANIKIWA");

kurudi kweli; } mwingine {if (ret == HTTP_UPDATE_FAILED) {

Serial.printf ("Kuboresha Imeshindwa");

}}} kurudi uwongo; }

Hatua ya 7: Mwishowe, Anzisha Sasisho

Wakati wa boot, au labda kwa kujibu ujumbe wa MQTT (kama mimi) tumia nambari ifuatayo:

ikiwa (_UhalisiUpdate (kweli)) kuanza kwa ESP ();

// au kwa SPIFFS…

ikiwa (_UhalisiUpdate (uwongo)) kuanza kwa ESP ();

Kifaa kitajisasisha na kuwasha tena nambari mpya kutoka kwa seva. Ni rahisi sana kwangu kuliko kusasisha vifaa 33 vya mikono!

Maelezo mengi muhimu zaidi juu ya Uendeshaji wa Nyumbani, IOT na programu ya ESP8266 inaweza kupatikana kwenye Blogi yangu

Ilipendekeza: