Агуулгын хүснэгт:

ESP8266/ESP32 ашиглан өгөгдлийг хусах: 7 алхам
ESP8266/ESP32 ашиглан өгөгдлийг хусах: 7 алхам

Видео: ESP8266/ESP32 ашиглан өгөгдлийг хусах: 7 алхам

Видео: ESP8266/ESP32 ашиглан өгөгдлийг хусах: 7 алхам
Видео: #7 Программирование панели HMI ESP8266 Modbus RTU и OP320. 2024, Арваннэгдүгээр
Anonim
ESP8266/ESP32 ашиглан өгөгдлийг хусах
ESP8266/ESP32 ашиглан өгөгдлийг хусах
ESP8266/ESP32 ашиглан өгөгдлийг хусах
ESP8266/ESP32 ашиглан өгөгдлийг хусах

Та Arduino төслүүдийнхөө өгөгдлийг авахыг хүсч байсан уу, гэхдээ олон нийтэд зориулсан API байхгүй байна уу? Эсвэл Instagram API гэх мэт тохиолдолд тохируулах процесс тийм ч тохиромжтой биш байдаг уу?

Энэхүү гарын авлагад бид ESP8266 эсвэл ESP32 төслүүдийнхээ вэбсайтаас мэдээлэл хуулах хоёр өөр сонголтыг авч үзэх болно.

Алхам 1: Видеог үзээрэй

Image
Image

Би энэ заавартай ижил зүйлийг хамарсан видео хийсэн тул та сонирхож байвал үзээрэй!

Алхам 2: Эхлэхээсээ өмнө

Бид эхлэхийн өмнө
Бид эхлэхийн өмнө
Бид эхлэхийн өмнө
Бид эхлэхийн өмнө

Миний хуулж авах гэж буй өгөгдөл нь нийтэд нээлттэй өгөгдөл бөгөөд баталгаажуулалт шаарддаггүй гэдгийг анхаарна уу. Жишээлбэл, миний YouTube -ийн захиалагчдын тоог зөвхөн зохиогчийн студид л ашиглах боломжтой байдаг тул төхөөрөмж үүнийг надаар баталгаажуулсан хүсэлт гаргах шаардлагатай болно. Энэ төрлийн хүсэлт нь энэ видеоны хувьд хамааралгүй болно. Хамрах боломжтой эсэхийг шалгах хурдан тест бол хуудсыг нууц цонхонд ачаалахыг оролдох явдал бөгөөд ингэснээр таныг ямар ч сайт руу автоматаар нэвтрэхгүй болно.

Энэхүү зааварт заасан техникийн хувьд бид хөтөч дээр байдаг хөгжүүлэгчдийн зарим хэрэгслийг ашиглах шаардлагатай болно. Би тэдгээрийг Firefox дээр үзүүлэх болно, гэхдээ Chrome нь ижил төстэй хэрэгслүүдтэй болохыг би мэднэ, бусад хөтөч дээр ч бас байдаг гэдэгт би итгэлтэй байна.

Алхам 3: Нийтийн бус API (хорлон сүйтгэгч: Instructables нэг байна!)

Бидний авч үзэх хамгийн эхний арга бол олон нийтийн бус API ашиглах явдал юм. Энэ нь үргэлж боломжтой байдаггүй, гэхдээ хэрэв энэ нь гарцаагүй бол та үүнийг ашиглахыг зорих ёстой. Миний "олон нийтийн бус API" гэж нэрлэж буй зүйл бол үндсэндээ сайт нь бидний олж авахыг хүссэн өгөгдлийг авахын тулд хөшигний ард вэбсайт дээрээ сурталчилгаа хийгээгүй API ашигладаг явдал юм.

Үүнийг ашиглахыг илүүд үзэх хэд хэдэн шалтгаан бий.

  1. Хамгийн том давуу тал нь вэб хуудас шиг байнга өөрчлөгдөх магадлал багатай байдаг, хэрэв та өгөгдлийг HTML вэб хуудаснаас шууд хуулж авбал сайтад өөрчлөлт оруулах бүрт таны задлах ажиллагаа эвдэрч магадгүй юм.
  2. Энэ нь ихэвчлэн өгөгдөл илүү үр ашигтай байдаг. Вэб хуудсыг хусаж байхдаа та HTML хуудсыг бүхэлд нь татаж аваад үүнээс мэдээлэл авахын тулд API -ууд зөвхөн өгөгдлийн цэгүүдийг буцааж өгөх болно, ингэснээр ихэвчлэн хамаагүй бага хүсэлт байх болно.
  3. Ихэвчлэн задлан шинжлэх нь илүү хялбар байдаг. Ихэвчлэн API нь өгөгдлийг задлахад хялбар JSON форматаар буцаадаг бөгөөд хэрэв та олон тооны өгөгдлийг гаргаж байгаа бол энэ нь ялангуяа үнэн юм.

Вэб хуудас иймэрхүү тохиргоог ашигладаг эсэхийг бид эхлээд олж мэдэх ёстой. Хэрэв сайт Kickstarter дээр байгаа шиг бодит цаг хугацаанд үнэ цэнээ шинэчилж байгаа бол энэ тохиргоог ашиглах магадлал байхгүй хэвээр байх болно. Instructables нь олон нийтэд зориулагдаагүй API-ийг ашиглан сайтынхаа зарим мэдээллийг бодит цаг хугацаанд сэргээдэггүй ч гэсэн татаж авах боломжтой.

Сайт энэ тохиргоог ашиглаж байгаа эсэхийг шалгахын тулд хөтөчийнхөө хөгжүүлэгчийн горимыг оруулна уу, үүнийг хийх хамгийн хялбар арга бол хуудсан дээр хулганы баруун товчийг дараад "элементийг шалгах" -ыг сонгох явдал юм.

Дараа нь та сүлжээний таб руу очихыг хүсэх болно, энэ нь вэб хуудасны хүсэлтийг цаана нь харуулах болно, энэ хуудсыг нээсний дараа хуудсыг дахин ачаалах шаардлагатай байж магадгүй тул зөвхөн үүнээс хойш хийсэн хүсэлтийг харуулах болно.

Та ихэвчлэн "json" төрлийн хүмүүсийг хайж олохыг хүсдэг. Энд маш олон хүсэлт ирж болох тул төрлөөр нь эрэмбэлэхэд тусална. Kickstarter кампанит ажлын хуудсан дээр энэ тохиргоог ашиглаж байгаа нь маш тодорхой харагдаж байна, учир нь та "stats.json" эцсийн цэг рүү байнга хүсэлт гаргаж байгааг харж болно. Instructables зохиогчдын хуудсан дээр (жишээ нь минийх бол "https://www.instructables.com/member/witnessmenow/") тэд байнгын хүсэлт гаргадаггүй, гэхдээ та "showAuthorStats" төгсгөлийн цэгийн хүсэлтийг бусдын дунд нуугдаж байгааг харж болно.

Энэхүү хүсэлтийн талаар нэмэлт мэдээлэл авахын тулд та үүн дээр дарж болно. Хүсэлтийг давтахын тулд та эндээс шаардлагатай бүх мэдээллийг авах боломжтой байх ёстой. Гэхдээ үүнийг хийхээсээ өмнө хүссэн өгөгдөл байгаа эсэхийг дахин шалгах хэрэгтэй. Хариултын таб дээр дарж өгөгдөл байгаа эсэхийг шалгаарай.

Хэрэв танд хэрэгтэй өгөгдөл байгаа бол та бүгдийг тохируулсан болно! Та дараа нь API -тэй холбогдох талаар миний өмнөх видеон дээр дурдсан ижил аргыг ашиглаж болно. Үүний богино хувилбар нь хүсэлт нь эхлээд Postman гэх мэт хэрэгсэл дээр хүлээгдэж байсны дагуу ажиллаж байгаа эсэхийг шалгах бөгөөд дараа нь энэ жишээ төслийг ашиглан таны төхөөрөмж дээр ажиллаж байгаа эсэхийг шалгах явдал юм.

JSON өгөгдлийг задлан шинжлэхийн тулд би ArudinoJSON -ийг ихэнх тохиолдолд ашиглахыг зөвлөж байна, хэрэв энэ нь танд заавар өгөхийг хүсч байвал надад мэдэгдээрэй!

Алхам 4: Өгөгдлийг шууд хусах

Өгөгдлийг шууд хусах
Өгөгдлийг шууд хусах
Өгөгдлийг шууд хусах
Өгөгдлийг шууд хусах
Өгөгдлийг шууд хусах
Өгөгдлийг шууд хусах

Дараа нь бид өгөгдлийг вэб хуудаснаас шууд хусахыг авч үзэх болно, энэ нь төхөөрөмж дээрх бүрэн вэб хуудсыг шаардаж, бидний хүссэн өгөгдлийг задлан шинжлэх болно. Олон нийтийн бус API-ийн энэ аргын давуу талыг би аль хэдийн дурдсан боловч заримдаа шаардлагатай байдаг!

Энд анхаарах нэг чухал зүйл бол хэрэв та вэб хөгжүүлэлтийг сайн мэддэг бол тухайн элементийн тухай мэдээлэл, түүний бүтэц, зохион байгуулалтыг олж мэдэхийн тулд шалгах элементийн онцлогийг ашиглаж болно. Орчин үеийн вэб хуудсуудыг ихэвчлэн Javascript ашиглан динамикаар өөрчилдөг бөгөөд энэ нь таны төхөөрөмж дээр хийгдэхгүй тул энэ аргыг ашиглахаас зайлсхийх хэрэгтэй. Таны төхөөрөмж дээр байгаа HTML код нь зөвхөн татаж авсан вэб хуудас байх болно. Үүний сайн жишээ бол TeamTrees хуудас бөгөөд одоогийн хандивын тоо 0 -ээр эхэлж, дараа нь энэ анимацаар хуудсанд ачаалагдах болно, гэхдээ бидний өмнө үзсэн хоёр жишээнээс ялгаатай нь өгөгдлийг арын дэвсгэр дээр ачаалдаггүй. зөв өгөгдөл өөр газар байх ёстой.

Вэб хуудасны анхны кодыг үзэхийн тулд та хуудсан дээр хулганы баруун товчийг дараад "Эх сурвалжийг харах" -ыг сонгож болно. Та дараа нь хүссэн өгөгдлөө хайж олохыг хүсч байгаа тул TeamTrees-ийн жишээн дээр бид одоогийн хандивын тоог хайхад бодит тоо нь тоолох элементийн өгөгдөл тоолох шинж чанарт хадгалагдаж байгааг бид харж болно. -ээс өгөгдлийг хусах.

Таны өгөгдөл рүү хөтөлдөг хайлтын мөрийг олох хэрэгтэй, төхөөрөмжийг кодлохын өмнө үүнийг олоход илүү хялбар байдаг. Энэ жишээний хувьд "өгөгдөл тоолох \" "хайлтыг хайж олох нь бидний хүссэн өгөгдөл рүү шууд хүргэж байна. Энэ нь хуудасны бусад хэсэгт таарч байна гэж санаа зовох хэрэггүй, учир нь энэ нь эхний байранд орох болно. Хэрэв та 3 дахь цохилтыг хийх шаардлагатай байсан бол эхний 2 цохисныг үл тоомсорлож програмчлах боломжтой.

Хэрэв бид TeamTrees -ийн жишээг авч үзвэл өмнөх шигээ бид хариултын толгойг алгасаад одоо хариултын хэсгийг (энэ нь вэб хуудас) харж байна. Үйлчлүүлэгчээс буцаж ирдэг зүйл бол мэдээллийн урсгал юм. Бид хайлтын асуулга хүртэл юу ч хамаагүй, тиймээс бид клиент хийдэг. Хэрэв энэ нь хайлтын асуулгыг олсон бол энэ нь үнэн болж, урсгалыг асуулгын төгсгөлд шилжүүлэх болно. Дамжуулалтаас авах боломжтой дараагийн зүйл бол бидний хайж буй өгөгдөл байх болно, гэхдээ энэ тохиолдолд өгөгдөл хэр удаан үргэлжлэх нь тодорхойгүй байгаа ч энэ нь урсгал дахь бидний одоогийн байрлал ба дараагийн урвуу таслал хоёрын хоорондох бүх мэдээлэл гэдгийг бид мэднэ.. Бид үүнийг "client.readBytesUntil" ашиглан хэлснийг хийж, байтыг заасан асуулгад хүрэх хүртэл буферт уншдаг. Уншиж буй буфер нь бүх өгөгдлийг хадгалах хангалттай том хэмжээтэй байгаа эсэхийг шалгаарай, бид 32 -той энд аюулгүй байгаа гэж бодож байна!

Хэрэв танд хэрэгтэй бүх өгөгдөл байгаа бол та цаашид мэдээлэл унших шаардлагагүй болно. Би энд холболтыг хаасангүй, учир нь энэ нь ESP8266 дээр асуудал үүсгээгүй, ESP32 -т асуудал үүсгэсэн юм шиг санагдсан тул client.stop () нэмсэн. Үнэнийг хэлэхэд, яагаад би энэ аргыг хамгийн дээд хэсэгт оруулсан нь тодорхойгүй байна, хүссэн өгөгдөлтэй болсны дараа үүнийг хаах нь илүү утга учиртай гэж би бодож байна.

Алхам 5: Гадаад сервер ашиглан өгөгдлийг хусах:

Гадаад сервер ашиглан өгөгдлийг хусах
Гадаад сервер ашиглан өгөгдлийг хусах
Гадаад сервер ашиглан өгөгдлийг хусах
Гадаад сервер ашиглан өгөгдлийг хусах

Нөгөө нэг сэдэв бол NodeJS гэх мэт ердийн компьютер дээр суурилсан орчинд микро хянагчийг задлан шинжлэх илүү сайн хэрэгсэл байдаг тул заримдаа вэб хуудаснаас өгөгдөл авч, илүү хялбар болгох үйлчилгээ хийх нь утга учиртай байж магадгүй юм. таны ESP8266 эсвэл ESP32 -ийн төгсгөлийн цэг. Үүний нэг жишээ бол CrowdSupply хуудсыг хусаж хэдэн TinyPICO зарагдсан тухай шууд тоолох явдал байв. ESP8266 эсвэл ESP32 дээр шууд хүрэх боломжтой байсан боловч хэд хэдэн өөр өөр элемент дээр олон янзын өгөгдлийн цэгүүдийг задлан шинжилж байсан тул энэ нь төвөгтэй байх болно.

Би NodeJS төслийг бүтээж, cheerio нэртэй номын санг ашиглан өгөгдлийг задлан шинжилсэн бөгөөд маш сайн ажилласан. Би энэ төслийг өмнө нь байсан үүл сервер дээр байрлуулсан боловч хэрэв танд ийм тохиргоо байхгүй бол та ийм төслийг pi дээр ажиллуулж болно.

Алхам 6: Хэрэглээний хязгаар

Хэрэглэх хязгаар
Хэрэглэх хязгаар

Эдгээр бүх арга барилд нөлөөлж болзошгүй нэг зүйл бол сайтын ашиглалтын хязгаарыг давах явдал юм. Ердийн API -д ихэвчлэн минут тутамд эсвэл өдөрт хэдэн удаа хүсэлт гаргах боломжтойг маш сайн баримтжуулдаг бөгөөд үүнд үндэслэн та төслийнхөө хүсэлтийг хязгаарлаж болно. Та хусаж байхдаа эдгээр хязгаарлалтууд нь юу болохыг мэдэхгүй тул та тэдгээрийг цохиж, блоклох эрсдэлтэй болно. Би үүнийг хязгаарлах талаар тодорхой зөвлөгөө өгч чадахгүй, тиймээс та тэдний сайн номонд үлдэх болно, гэхдээ хэдхэн секунд тутамд өөрсдөө хүсэлт тавьдаг шиг тоглогч эхлэхээс бусад тохиолдолд минут тутамд ямар ч зүйл хэтэрхий олон удаа тохиолддог гэж би боддог.

Алхам 7: Уншсанд баярлалаа

Хэрэв та ESP8266 эсвэл ESP32 дээрх вэб хуудсуудаас өгөгдлийг шууд задлан шинжлэх сонирхолтой байгаа бол энэ видео тусалсан гэж найдаж байна. Миний хамруулаагүй сэдвээр өөр асуулт байна уу? Доорх сэтгэгдлүүд дээр надад мэдэгдээрэй, эсвэл надтай болон миний Discord сервер дээр байгаа бусад олон үйлдвэрлэгчидтэй нэгдээрэй, энд бид энэ сэдвээр эсвэл өөр бусад үйлдвэрлэгчидтэй холбоотой сэдвээр ярилцаж болно, хүмүүс тэнд үнэхээр тустай байдаг тул өлгөхөд тохиромжтой газар юм. гадагш

Миний хийж буй зүйлийг дэмжихэд тусалдаг Github ивээн тэтгэгчиддээ маш их баярлалаа гэж хэлмээр байна. Хэрэв та мэдэхгүй бол Github эхний жилдээ ивээн тэтгэгчтэй таарч байгаа тул хэрэв та ивээн тэтгэлэг хийвэл тэд ирэх хэдэн сарын хугацаанд 100% -тай тэнцэх болно.

Уншсанд баярлалаа!

Зөвлөмж болгож буй: