Агуулгын хүснэгт:
- Алхам 1: Танд хэрэгтэй зүйл
- Алхам 2: Хоёртын програм хангамжийг хадгалах репозитор үүсгэх
- Алхам 3: Хоёртын файл үүсгэх
- Алхам 4: Серверийн урсгалыг бий болгох
- Алхам 5: Серверийн логикийг нэмнэ үү
- Алхам 6: Шинэчлэлт хүсэхийн тулд ноорог дээр код нэмнэ үү
- Алхам 7: Эцэст нь шинэчлэлтийг эхлүүлнэ үү
Видео: ESP8266 автомат шинэчлэлтийн серверийг тохируулах: 7 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:05
Олон хүмүүс одоо 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 ба түүнээс дээш флаш RAM бүхий аливаа ESP8266 дэвтэр хавтан
- Вэб сервер (даруухан бөөрөлзгөнө Pi ч гэсэн хийх болно - энэ бол миний ашигладаг зүйл)
- Хэрэв та SPIFFS файлын системийн зургийг автоматаар шинэчлэхийг хүсч байвал mkspiffs хэрэгсэл болно
Алхам 2: Хоёртын програм хангамжийг хадгалах репозитор үүсгэх
Миний сервер дээр/home/pi/trucFirmware нэртэй хавтас байдаг бөгөөд энэ нь төхөөрөмжийн төрөл бүрийн програм хангамж, SPIFFS зургийг агуулдаг.
Би техник хангамжийн төрөл тус бүрт хоёртын файлыг тусад нь хадгалдаг (цөөн тооны #тодорхойлолттой ганц эх сурвалжаас), шинэ хувилбар бэлэн болсон үед би зорилтот төхөөрөмж бүрийн хувьд Arduino IDE "эмхэтгэсэн хоёртын" цэсийн командыг ашигладаг. 5 төрлийн тоног төхөөрөмж байдаг боловч бүх төхөөрөмжүүд 1M эсвэл 4M флэштэй байдаг тул SPIFFS хоёртын хоёр хувилбар байдаг: 1M ба 4M хувилбар - mkspiffs хэрэгслээр бүтээгдсэн.
Алхам 3: Хоёртын файл үүсгэх
Arduino IDE цэсийн ноорог/Экспортын эмхэтгэсэн хоёртын хувилбарыг ашиглан шинэчлэлтийн серверээс төхөөрөмжид байршуулах програмыг үүсгэнэ үү.
Хэрэв танд SPIFFS хоёртын файл хэрэгтэй бол mkspiffs хэрэгслийг суулгах хэрэгтэй болно.
Үүнийг авсны дараа SPIFFS хоёртын файлыг бий болгох нь энгийн зүйл юм. Надад хувилбарын дугаарыг параметр болгон авдаг 1M хувилбарт зориулсан нэг мөрийн багц файл байна (%1)
mkspiffs -c өгөгдөл/ spiffs_%1_1M.bin
4M хувилбарын хувьд өөр:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c data/ spiffs_%1_4M.bin
Дараа нь би бүх эмхэтгэсэн хоёртын файлууд болон SPIFFS.binary файлуудыг репозитор руу хуулж авдаг
Алхам 4: Серверийн урсгалыг бий болгох
Би NODE-RED-ийг ашиглаж байгаа боловч ямар ч серверийн технологи / хэл дээр энгийн логик ижил байх болно.
a) 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 хаягийн 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 == "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 функцид зориулсан wildcard бүхий зохих замыг тохируулдаг
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. орлуулах (/_ / dM \.bin/, ""); }
if (msg.version <f) {
node.warn ("шинэчлэх шаардлагатай");
node.warn ("буцах болно"+msg. файлын нэр); msg буцах; } node.warn ("шинэчлэлт байхгүй"); msg.statusCode = 304; msg.payload = ;
msg буцах;
Шилжүүлэгч зангилаа нь 304 "шинэчлэлт шаардлагагүй" гэсэн мессежийг илгээх эсвэл жинхэнэ шинэ хоёртын файлыг буцааж төхөөрөмж рүү буцааж илгээдэг.
Алхам 6: Шинэчлэлт хүсэхийн тулд ноорог дээр код нэмнэ үү
Ноорог нь дараах кодыг агуулсан байх ёстой бөгөөд ингэснээр дараагийн удаа хувилбарын дугаарыг нэмэгдүүлэхэд автоматаар шинэчлэгдэх болно.
#оруулах
TRUC_VERSION "0_4_99" -ийг #тодорхойлох
#0 "5_0" SPIFFS_VERSION -ийг тодорхойлох
// THIS_DEVICE нь хөрвүүлэх хугацааны янз бүрийн тодорхойлолтоос хамааран эрт тохируулагдсан байдаг // энэ нь эцэстээ hw төрлийг тодорхойлдог. #Define THIS_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // энэ бол миний бөөрөлзгөнө Pi сервер, 1880 нь анхдагч NODE-RED порт // /шинэчлэлт бол миний сонгосон сервер бөгөөд "сонсох", дараа нь төхөөрөмжийн төрөл юм … bool actualUpdate (bool sketch = false) {String msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (худал); хэрэв (ноорог) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** Энэ бол "бизнес хийдэг" мөр}} өөр {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } if (ret! = HTTP_UPDATE_NO_UPDATES) {if (ret == HTTP_UPDATE_OK) {
Serial.printf ("ШИНЭЧЛЭЛТ АМЖИЛТТАЙ");
үнэн рүү буцах; } өөр {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf ("Сайжруулж чадсангүй");
}}} худал буцаах; }
Алхам 7: Эцэст нь шинэчлэлтийг эхлүүлнэ үү
Ачаалах үед эсвэл MQTT мессежийн хариуд (миний хийдэг шиг) дараах кодыг ажиллуулна уу.
if (_actualUpdate (true)) ESP.restart ();
// эсвэл SPIFFS -ийн хувьд …
if (_actualUpdate (false)) ESP.restart ();
Төхөөрөмж өөрөө шинэчлэгдэж, серверээс хамгийн сүүлийн кодыг ажиллуулж дахин ачаалах болно. Миний хувьд 33 төхөөрөмжийг гараар шинэчлэхээс хамаагүй хялбар юм!
Гэрийн автоматжуулалт, IOT болон ESP8266 програмчлалын талаар илүү хэрэгтэй мэдээллийг Миний блог дээрээс олж болно
Зөвлөмж болгож буй:
Өөрийн Minecraft серверийг байршуулах (цонх): 6 алхам
Minecraft серверээ байршуулах (Windows): Minecraft сервер үүсгэхийн тулд та зарим чухал зүйлийг мэдэж байх ёстой. Таны RAM -ийн нэг хэсэг болон процессорын нэг хэсгийг ашиглах болно
ESP8266 автомат автомат IoT коридорын шөнийн гэрэл: 4 алхам (зурагтай)
ESP8266 -тай автомат IoT хонгилын шөнийн гэрэл: Би энэ төслийг өөр зааварчилгааны бичлэгээс авсан шатны гэрлээс санаа авч эхлүүлсэн. Ялгаа нь хэлхээний тархи нь ESP8266 -ийг ашиглаж байгаа бөгөөд энэ нь IoT төхөөрөмж байх болно гэсэн үг юм
Clone SimpleBGC хянагчийн шинэчлэлтийн асуудлыг хэрхэн шийдвэрлэх вэ: 4 алхам
Clone SimpleBGC хянагчийн шинэчлэлтийн асуудлыг хэрхэн шийдвэрлэх вэ: Сайн байна уу. Саяхан би нисгэгчгүй онгоцныхоо төслийн SimpleBGC gimbal хянагч дээр ажиллаж байсан. Би амжилттай холбогдож тохирууллаа. Энэ нь төгс ажиллаж байсан. Үүний дараа би firmware -ээ v2.2 -оос v2.4 болгон шинэчлэхийг хүссэн юм. Тиймээс, би gimbal -ийг сайжруулсны дараа
Цонхны 10 шинэчлэлтийн мэдэгдлээс ангижрах !!: 10 алхам
Цонхны 10 шинэчлэлтийн мэдэгдлээс ангижрах !!: Windows 10 -ийг байнга шинэчлэхийг шаардахаас залхаж байна уу? Санаа зоволтгүй, та эдгээр ядаргаатай мэдэгдлүүдийг үүрд арилгаж чадна, би танд хэрхэн яаж харуулахыг хүсч байна уу, миний сувгийг бүртгүүлээрэй Баярлалаа
Filezilla ашиглан FTP серверийг тохируулах нь: 7 алхам
Filezilla ашиглан FTP сервер тохируулах !: 1. FTP сервер гэж юу вэ? 2. Би яагаад үүнийг хийхийг хүсч байна вэ? 1. Файл дамжуулах протокол (FTP) нь интернет гэх мэт сүлжээгээр дамжуулан нэг компьютерээс нөгөө компьютер руу өгөгдөл дамжуулахад хэрэглэгддэг сүлжээний протокол юм. FTP бол файл дамжуулах протокол юм