ዝርዝር ሁኔታ:

የ ESP8266 ራስ -ሰር ዝመና አገልጋይ ያዋቅሩ -7 ደረጃዎች
የ ESP8266 ራስ -ሰር ዝመና አገልጋይ ያዋቅሩ -7 ደረጃዎች

ቪዲዮ: የ ESP8266 ራስ -ሰር ዝመና አገልጋይ ያዋቅሩ -7 ደረጃዎች

ቪዲዮ: የ ESP8266 ራስ -ሰር ዝመና አገልጋይ ያዋቅሩ -7 ደረጃዎች
ቪዲዮ: በዓለም ላይ ካሉት እጅግ በጣም የተሻሉ ጽሑፎች 2024, ሀምሌ
Anonim
የ ESP8266 ራስ -ሰር ዝመና አገልጋይ ያዋቅሩ
የ ESP8266 ራስ -ሰር ዝመና አገልጋይ ያዋቅሩ

ብዙ ሰዎች ESP8266 ን አሁን በብዙ የቤት ውስጥ (ESP-01S ፣ Wemos D1 ፣ NodeMCU ፣ Sonoff ወዘተ) ለቤት አውቶማቲክ ስርዓቶች እየተጠቀሙ ነው። የራስዎን ኮድ ከጻፉ (እኔ እንደማደርገው) እያንዳንዳቸውን በኦቲኤ (በአየር ላይ) እንኳን ማዘመን ትንሽ አድካሚ ይሆናል።

የራሴ ስርዓት ፣ ለምሳሌ 8x ESP-01S ፣ 6x Wemos D1 ፣ 4x Sonoff Basic 12x Sonoff S20 ፣ 2x Sonoff SV እና አንድ የጋራ ኮድ መሠረት የሚጋራ NodeMCU አለው ፣ ስለዚህ ቀለል ያለ ኮድ በምሠራበት ጊዜ ለማዘመን 33 መሣሪያዎች አሉ። ለውጥ።

ግን ቀላሉ መንገድ አለ - “የዝመና አገልጋይ”። እጅግ በጣም ጥሩው የአርዱዲኖ አይዲኢ + ESP8266 ኮር አብዛኛው ሥራውን የሚያከናውን ቤተ -መጽሐፍት አለው (ESP8266httpUpdate) ፣ ግን እንዲሠራ የራስዎን አገልጋይ እንዴት እንደሚያዋቅሩ ማወቅ አለብዎት።

ይህ አስተማሪ NODE-RED አገልጋይን እንዴት እንደሚጠቀሙ ያሳየዎታል ፣ ግን ተመሳሳይ አመክንዮ በመረጡት ማንኛውም የአገልጋይ ቴክኖሎጂ ላይ ይሠራል። Apache + PHP ወዘተ

ደረጃ 1: የሚያስፈልግዎት

  1. አርዱዲኖ አይዲኢ
  2. ESP8266 ኮር
  3. 1 ሜ ወይም ከዚያ በላይ ፍላሽ ራም ያለው ማንኛውም የ ESP8266 dev ቦርድ
  4. የድር አገልጋይ (ትሁት ራስተር እንጆሪ እንኳን ያደርጋል - እኔ የምጠቀምበት ነው)
  5. የ SPIFFS ፋይል ስርዓት ምስል በራስ-ሰር ማዘመን ከፈለጉ (አማራጭ) የ mkspiffs መሣሪያ

ደረጃ 2 - ሁለትዮሽ ጽኑ ዕቃዎችን ለመያዝ ማከማቻን ይፍጠሩ

የሁለትዮሽ ጽኑ ዕቃዎችን ለመያዝ ማከማቻን ይፍጠሩ
የሁለትዮሽ ጽኑ ዕቃዎችን ለመያዝ ማከማቻን ይፍጠሩ

በአገልጋዬ ላይ የተለያዩ የመሣሪያ ጽኑ ዕቃዎችን እና የ SPIFFS ምስሎችን የሚይዝ/ቤት/pi/trucFirmware የሚባል አቃፊ አለኝ።

ለእያንዳንዱ የሃርድዌር ዓይነት (ከጥቂት #ትርጓሜዎች ከአንድ ምንጭ ፋይል) የተለየ ሁለትዮሽ እጠብቃለሁ እና አዲስ ልቀት ሲዘጋጅ ለእያንዳንዱ የዒላማ መሣሪያ የአርዲኖ አይዲኢን “ንድፍ/ላክ የተጠናከረ የሁለትዮሽ” ምናሌ ትዕዛዙን እጠቀማለሁ። ምንም እንኳን 5 የተለያዩ የሃርድዌር ዓይነቶች ቢኖሩም ፣ ሁለት SPIFFS ሁለትዮሽዎች ብቻ አሉ - 1M እና 4M ስሪት - በ mkspiffs መሣሪያ የተገነባ - ሁሉም መሳሪያዎች 1 ሜ ወይም 4 ሜ ብልጭታ ስላላቸው።

ደረጃ 3: ሁለትዮሽዎችን ይፍጠሩ

የ Arduino IDE ምናሌ አማራጭ ንድፍ/ወደ ውጭ መላክ የተጠናከረ ሁለትዮሽ በመጠቀም ፣ ከዝማኔ አገልጋዩ ሲጠይቀው ወደ መሣሪያው የሚጫነውን firmware ይፍጠሩ።

የ SPIFFS ሁለትዮሽ ከፈለጉ የ mkspiffs መሣሪያውን መጫን ያስፈልግዎታል።

አንዴ ካለዎት የ SPIFFS ሁለትዮሽ መገንባት ቀላል ነው። የስሪት ቁጥሩን እንደ መለኪያ (%1) ለሚወስደው ለ 1 ሜ ስሪት አንድ መስመር የምድብ ፋይል አለኝ።

mkspiffs -c ውሂብ/ spiffs_%1_1M.bin

እና ሌላ ለ 4M ስሪት

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

ከዚያ ሁሉንም የተጠናቀሩ ሁለትዮሽ እና የ SPIFFS.ቢኔሪያል ፋይሎችን ወደ ማከማቻው እገለብጣለሁ

ደረጃ 4 የአገልጋዩን ፍሰት ይፍጠሩ

የአገልጋይ ፍሰትን ይፍጠሩ
የአገልጋይ ፍሰትን ይፍጠሩ

እኔ NODE-RED ን እጠቀማለሁ ፣ ግን ቀላሉ አመክንዮ በማንኛውም የአገልጋይ ቴክኖሎጂ / ቋንቋ ላይ ተመሳሳይ ይሆናል።

ሀ) የ ESP8266httpUpdate ጥያቄን የሚያዳምጥ url ን ይግለጹ። የእኔ raspberryPi serevr በ 192.168.1.4 ላይ ነው እና በ 1880 ወደብ ላይ ያዳምጣል /ከሃርድዌር ዓይነት ጋር ተያይዞ። ስለዚህ ለ ‹Wemos D1 Mini› ሁለትዮሽ ልጠይቅ ከሆነ ፣ ዩአርኤል እንደሚከተለው ያበቃል

192.168.1.4:1880/update/d1_mini

ለ) የሚከተሉትን አመክንዮ ለማስተናገድ ኮድ ይፍጠሩ

ESP8266: “ሰላም ፣ a.b.c የጽኑ ሥሪት እሄዳለሁ ፣ አዲስ ስሪት አለዎት?” አገልጋይ - “እስቲ ላየኝ… ah አዎ አዎ a.b.d አለኝ - እዚህ ይመጣል…”

አዲስ ስሪት ካለ አገልጋዩ በ http ምላሽ ውስጥ እንደ የሁለትዮሽ ውሂብ ጭነት ይልካል። የ ESP8266httpUpdate ክፍል አዲሱን ኮድ ለማስኬድ (ከተጠየቀ) መሣሪያውን እንደገና ከማስነሳት (ከተጠየቀ) ይልቅ የጽሑፍ ማስነሻ አድራሻውን ወደ አዲሱ ኮድ በመቀየር ባለ ሁለትዮሽውን ወደ ማህደረ ትውስታ የመገልበጥ አስቸጋሪ ክፍልን ይሠራል።

በሌላ በኩል ከፍ ያለ ስሪት ከሌለ ፣ እሱ “ለእርስዎ ምንም የለኝም” በሚለው በ http 304 ስህተት ይመልሳል እና ኮድዎ እንደተለመደው መስራቱን ይቀጥላል።

ደረጃ 5 የአገልጋዩን ሎጂክ ያክሉ

በዥረቱ ውስጥ ያለው የመጀመሪያው መስቀለኛ መንገድ https://192.168.1.4:1880//ለመሣሪያ ዓይነት ከተጨመረበት የ http ጥያቄ ጋር “ያዳምጣል”። የሚከተለው የጃቫስክሪፕት ኮድ ላለው ‹የፍለጋ ዱካ ይገንቡ› ተግባር መስቀለኛ መንገድ ያስተላልፋል-

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

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

ከሆነ (msg.mode == "sketch") {msg.payload = "/home/pi/trucFirmware/*. ino."+msg.type+". bin"; } ሌላ {var sz = h ['x-esp8266-chip-size']; msg.payload = "/home/pi/trucFirmware/spiffs _*_"+(sz/1048576)+"M.bin"; } msg መመለስ;

ይህ በቀላሉ ለሚከተለው የ 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", ""); } ሌላ {f = f.replace ("/home/pi/trucFirmware/spiffs_", ""); f = f.replace (/_ / dM \.bin/, ""); }

ከሆነ (msg.version <f) {

node.warn (“ማሻሻል ያስፈልጋል”);

node.warn ("ይመለሳል"+msg.filename); msg መመለስ; } node.warn (“ማሻሻል የለም”); msg.statusCode = 304; msg.payload = ;

msg መመለስ;

የመቀየሪያ መስቀያው ከዚያ የ 304 “ምንም ዝመና አያስፈልግም” የሚለው መልእክት መላክን ወይም ትክክለኛው አዲስ ሁለትዮሽ ተመልሶ ወደ መሣሪያው መመለሱን ያረጋግጣል።

ደረጃ 6 - ዝመናን ለመጠየቅ ኮዱን ወደ ረቂቅ ያክሉ

በሚቀጥለው ጊዜ የስሪት ቁጥሩን በሚጨምሩበት ጊዜ በራስ -ሰር እንዲዘምን ረቂቁ የሚከተለው ኮድ በውስጡ እንዲካተት ያስፈልጋል።

#ያካትቱ

#TRUC_VERSION "0_4_99" ን ይግለጹ

#SPIFFS_VERSION "0_5_0" ን ይግለጹ

// THIS_DEVICE በተለያዩ የማጠናከሪያ ጊዜ ትርጓሜዎች ላይ በመመስረት ቀደም ብሎ ተዘጋጅቷል/ ይህም በመጨረሻ የ hw ዓይነትን ይገልጻል ፣ ለምሳሌ። #ይህንን_እንዴት “ዲ 1_ሚኒ” const char * updateUrl =”https://192.168.1.4:1880/update/” ይህ_እንዴት; // ይህ የእኔ raspberry Pi አገልጋይ ነው ፣ 1880 ነባሪው NODE-RED ወደብ // /ዝመናው ለአገልጋዩ ‹እንዲያዳምጥ› የመረጥኩት url ነው ፣ ከዚያ የመሣሪያው ዓይነት… {ሕብረቁምፊ msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (ሐሰት); ከሆነ (ንድፍ) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** ይህ ‹ንግዱን የሚያከናውን›} ሌላ {ret = ESPhttpUpdate.updateSpiffs (updateUrl ፣ SPIFFS_VERSION) ፤ } ከሆነ (ret! = HTTP_UPDATE_NO_UPDATES) {ከሆነ (ret == HTTP_UPDATE_OK) {

Serial.printf ("የዘመነ ተሳካ");

እውነት ተመለስ; } ሌላ {ከሆነ (ret == HTTP_UPDATE_FAILED) {

Serial.printf ("ማሻሻል አልተሳካም");

}}} ሐሰትን ይመልሱ ፤ }

ደረጃ 7: በመጨረሻም ዝመናውን ያስጀምሩ

በሚነሳበት ጊዜ ፣ ወይም ምናልባት ለ MQTT መልእክት ምላሽ (እኔ እንደማደርገው) የሚከተለውን ኮድ ያሂዱ

ከሆነ (_actualUpdate (እውነተኛ)) ESP.restart ();

// ወይም ለ SPIFFS…

ከሆነ (_actualUpdate (ሐሰት)) ESP.restart ();

መሣሪያው እራሱን ያዘምናል እና የቅርብ ጊዜውን ኮድ ከአገልጋዩ በማሄድ እንደገና ይነሳል። 33 መሳሪያዎችን በእጅ ከማዘመን ለእኔ ለእኔ በጣም ቀላል ነው!

ስለ Home Automation ፣ IOT እና ESP8266 ብዙ ጠቃሚ መረጃዎች በእኔ ብሎግ ላይ ሊገኙ ይችላሉ

የሚመከር: