Სარჩევი:

მონაცემთა გაფანტვა ESP8266/ESP32– ით: 7 ნაბიჯი
მონაცემთა გაფანტვა ESP8266/ESP32– ით: 7 ნაბიჯი

ვიდეო: მონაცემთა გაფანტვა ESP8266/ESP32– ით: 7 ნაბიჯი

ვიდეო: მონაცემთა გაფანტვა ESP8266/ESP32– ით: 7 ნაბიჯი
ვიდეო: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, ივლისი
Anonim
მონაცემების გაფანტვა ESP8266/ESP32– ით
მონაცემების გაფანტვა ESP8266/ESP32– ით
მონაცემების გაფანტვა ESP8266/ESP32– ით
მონაცემების გაფანტვა ESP8266/ESP32– ით

ოდესმე გსურდათ თქვენი Arduino პროექტების მონაცემების მიღება, მაგრამ ამის საჯარო API არ არსებობს? ან ისეთ შემთხვევებში, როგორიცაა Instagram API, სადაც დაყენების პროცესი არ არის ძალიან მოსახერხებელი?

ამ ინსტრუქციებში ჩვენ ვაპირებთ შევხედოთ 2 განსხვავებულ ვარიანტს მონაცემების გადასაფხეკიდან ვებ – გვერდიდან თქვენი ESP8266 ან ESP32 პროექტებისთვის.

ნაბიჯი 1: ნახეთ ვიდეო

Image
Image

მე გადავიღე ვიდეო, რომელიც მოიცავს იმავეს, რაც ამ ინსტრუქციას იძლევა, ასე რომ, თუ თქვენ დაინტერესებული ხართ, გთხოვთ გადახედოთ მას!

ნაბიჯი 2: სანამ დავიწყებთ

სანამ დავიწყებთ
სანამ დავიწყებთ
სანამ დავიწყებთ
სანამ დავიწყებთ

უბრალოდ გაითავისეთ, რომ მონაცემები, რომელზეც მე ვისაუბრებ გაფუჭებაზე, არის საჯარო მონაცემები და არ საჭიროებს ავტორიზაციას. ასე ვთქვათ, ჩემი YouTube აბონენტების ზუსტი რაოდენობა ჩემთვის ხელმისაწვდომია მხოლოდ შემქმნელთა სტუდიაში, ასე რომ მოწყობილობას უნდა ჩადოს მოთხოვნა, რომელიც დამოწმებულია ჩემს მიერ მისი ჩატვირთვისთვის. ამ ტიპის მოთხოვნები ამ ვიდეოს ფარგლებს გარეთ იქნება. დაფარული იქნება სწრაფი ტესტი, რომ სცადოთ გვერდის ჩატვირთვა ინკოგნიტო ფანჯარაში, რადგან ეს ავტომატურად არ დარეგისტრირდება თქვენ ნებისმიერ საიტზე.

ამ ინსტრუქციით გათვალისწინებული ტექნიკისთვის ჩვენ უნდა გამოვიყენოთ დეველოპერის ზოგიერთი ინსტრუმენტი, რომელიც ხელმისაწვდომია ბრაუზერებში. მე ვაჩვენებ მათ Firefox– ით, მაგრამ მე ვიცი, რომ Chrome– ს აქვს მსგავსი ინსტრუმენტები და დარწმუნებული ვარ, რომ მათ აქვთ სხვა ბრაუზერებიც.

ნაბიჯი 3: არა საჯარო API (სპოილერი: Instructables Has One!)

პირველი გზა, რომელსაც ჩვენ შევხედავთ, არის არა საჯარო 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– ებთან დასაკავშირებლად. ამის მოკლე ვერსია არის დარწმუნდეთ, რომ მოთხოვნა მუშაობს ისე, როგორც მოსალოდნელია ისეთ ინსტრუმენტზე, როგორიცაა ფოსტალიონი და შემდეგ გამოიყენეთ ეს მაგალითი პროექტი იმის შესამოწმებლად, რომ ის მუშაობს თქვენს მოწყობილობაზე.

JSON მონაცემების გასანალიზებლად მე გირჩევთ გამოიყენოთ ArudinoJSON უმეტეს სცენარებში, თუ ეს არის ის, რისი სწავლებაც გსურთ, უბრალოდ გამაგებინეთ!

ნაბიჯი 4: მონაცემების პირდაპირ გაფანტვა

მონაცემების პირდაპირ გაფანტვა
მონაცემების პირდაპირ გაფანტვა
მონაცემების პირდაპირ გაფანტვა
მონაცემების პირდაპირ გაფანტვა
მონაცემების პირდაპირ გაფანტვა
მონაცემების პირდაპირ გაფანტვა

შემდეგი ჩვენ შევხედავთ მონაცემების ამოღებას პირდაპირ ვებ გვერდიდან, ეს არის მთლიანი ვებ გვერდის მოთხოვნა მოწყობილობაზე და მონაცემების გაანალიზება, რომელიც ჩვენ გვინდა. მე უკვე აღვნიშნე არასამთავრობო API– ს უპირატესობები ამ მეთოდთან შედარებით, მაგრამ ზოგჯერ ეს აუცილებელია!

ერთი რამ, რაც აქ მნიშვნელოვანია აღინიშნოს, თუ თქვენ იცნობთ ვებ დეველოპმენტს, შეიძლება შეგეჩვიოთ ინსპექტირების ელემენტის ფუნქციის გამოყენებას კონკრეტული ელემენტის შესახებ ინფორმაციის გასარკვევად და მისი სტრუქტურის შესახებ. ეს თავიდან უნდა იქნას აცილებული ამ მიდგომისთვის, რადგან თანამედროვე ვებ გვერდები ჩვეულებრივ დინამიურად იცვლება Javascript– ის გამოყენებით, რაც არ მოხდება თქვენს მოწყობილობაზე. თქვენს მოწყობილობაზე ხელმისაწვდომი HTML კოდი იქნება მხოლოდ გადმოწერილი ორიგინალური ვებ გვერდი. ამის კარგი მაგალითია TeamTrees გვერდი, მიმდინარე შემოწირულობების რაოდენობა იწყება 0 -ით და ჩატვირთულია გვერდზე მოგვიანებით ამ ანიმაციით, მაგრამ განსხვავებით ორი მაგალითისაგან, რაც ადრე ვნახეთ, ის არ იტვირთება მონაცემების ფონზე, ასე რომ სწორი მონაცემები სხვაგან უნდა იყოს.

ორიგინალური ვებ გვერდის კოდის სანახავად შეგიძლიათ დააწკაპუნოთ გვერდზე მარჯვენა ღილაკით და აირჩიოთ "წყაროს ნახვა". შემდეგ თქვენ გსურთ მოძებნოთ თქვენთვის სასურველი მონაცემები, ასე რომ TeamTrees– ის მაგალითში, როდესაც ჩვენ ვეძებთ შემოწირულობების მიმდინარე რაოდენობას, ჩვენ ვხედავთ, რომ ფაქტობრივი რაოდენობა ინახება დათვლის ელემენტის მონაცემების რაოდენობის თვისებაში, ეს არის ის, სადაც ჩვენ გვჭირდება მონაცემების ამოღება.

თქვენ უნდა მოძებნოთ საძიებო სტრიქონი, რომელიც მიგიყვანთ თქვენს მონაცემებამდე, გაცილებით ადვილია ამის გარკვევა მოწყობილობის კოდირების წინ. ამ მაგალითისთვის, "მონაცემების დათვლის" ძიება ზუსტად მიგვიყვანს იმ მონაცემებამდე, რაც ჩვენ გვსურს, რაც არის სრულყოფილი. ჩვენ არ გვჭირდება ფიქრი, რომ ის ასევე ემთხვევა გვერდის სხვა ადგილებს, რადგან ის პირველად მოხვდება ზედა ნაწილში. თუ თქვენ დაგჭირდათ მე -3 დარტყმა, შეგიძლიათ უბრალოდ დააპროგრამოთ ის, რომ იგნორირება მოახდინოს პირველ ორზე.

თუ გადავხედავთ TeamTrees- ის მაგალითს, ისევე როგორც ადრე ჩვენ გამოვტოვეთ პასუხის სათაურები და ახლა ვუყურებთ პასუხის მთავარს (ეს არის ვებ გვერდი). კლიენტისგან დაბრუნებული არის მონაცემთა ნაკადი. ჩვენ არაფერი გვაინტერესებს ჩვენი საძიებო მოთხოვნით, ამიტომ კლიენტს ვაკეთებთ. ვიპოვოთ. თუ ის იპოვის საძიებო მოთხოვნას, ის დაბრუნდება ჭეშმარიტად და ის გადაინაცვლებს ნაკადს მოთხოვნის ბოლოს. ნაკადიდან მომდევნო იქნება მონაცემები, რომელსაც ჩვენ ვეძებთ, მაგრამ ამ შემთხვევაში ჩვენ არ ვართ დარწმუნებული რამდენი ხანი იქნება მონაცემები, მაგრამ ჩვენ ვიცით, რომ ეს არის ყველა ინფორმაცია ნაკადში ჩვენს ამჟამინდელ ადგილსა და მომდევნო ინვერსიულ მძიმას შორის. რა ჩვენ ამის მიღწევა შეგვიძლია "client.readBytesUntil" - ის გამოყენებით, რომელიც აკეთებს იმას, რასაც ამბობს, ის კითხულობს ბაიტებს ბუფერში, სანამ არ მოხვდება მითითებულ მოთხოვნაზე. უბრალოდ დარწმუნდით, რომ ბუფერი, რომელსაც თქვენ კითხულობთ, საკმარისად დიდია ყველა მონაცემის შესანახად, მე ვფიქრობ, რომ ჩვენ საკმაოდ უსაფრთხო ვართ აქ 32 – ით!

თუ თქვენ გაქვთ ყველა საჭირო მონაცემი, მაშინ აღარ გჭირდებათ მონაცემების წაკითხვა. მე არ დავხურა კავშირი აქ, რადგან როგორც ჩანს, ეს არ იწვევს პრობლემას ESP8266– ზე, როგორც ჩანს, ეს იწვევს პრობლემებს ESP32– თან, ამიტომ დავამატე client.stop (). გულწრფელად რომ გითხრათ, მე არ ვარ დარწმუნებული, თუ რატომ დავამატე ეს მეთოდის ზედა ნაწილში, მე ვფიქრობ, რომ უფრო აზრიანი იქნებოდა მისი დახურვა მას შემდეგ რაც გექნებათ სასურველი მონაცემები.

ნაბიჯი 5: მონაცემების გაფანტვა გარე სერვერის გამოყენებით:

მონაცემების გაფანტვა გარე სერვერის გამოყენებით
მონაცემების გაფანტვა გარე სერვერის გამოყენებით
მონაცემების გაფანტვა გარე სერვერის გამოყენებით
მონაცემების გაფანტვა გარე სერვერის გამოყენებით

შეხების კიდევ ერთ თემას, არის ბევრად უკეთესი ინსტრუმენტები კომპიუტერის რეგულარულ გარემოში გასაანალიზებლად, როგორიცაა NodeJS, ვიდრე მიკრო კონტროლერზე, ამიტომ ხანდახან აზრი ექნება სერვისის შექმნას, რომელიც მოიპოვებს მონაცემებს ვებ გვერდიდან და უზრუნველყოფს უფრო მარტივს საბოლოო წერტილი თქვენი ESP8266 ან ESP32. ამის ერთ -ერთი მაგალითი იყო CrowdSupply გვერდის გაფანტვა, რათა გაეცნოთ რამდენი TinyPICO გაიყიდა. შეიძლება შესაძლებელი იყო ამის მიღწევა უშუალოდ ESP8266 ან ESP32– ზე, მაგრამ რამდენადაც იგი აანალიზებდა მრავალ სხვადასხვა მონაცემთა წერტილს რამდენიმე სხვადასხვა ელემენტზე, ასე რომ ეს გართულებული იქნებოდა.

მე დავამთავრე NodeJS პროექტის შექმნა და გავაანალიზე მონაცემები ბიბლიოთეკის გამოყენებით, სახელწოდებით cheerio და ის ძალიან კარგად გამოვიდა. მე მასპინძლობდა ამ პროექტს ღრუბლოვან სერვერზე, რომელიც მე უკვე მქონდა, მაგრამ თქვენ შეგიძლიათ გაუშვათ ეს პროექტი პიზე, თუ არ გექნებათ მსგავსი დაყენება.

ნაბიჯი 6: გამოყენების ლიმიტები

გამოყენების ლიმიტები
გამოყენების ლიმიტები

ერთი რამ, რამაც შეიძლება გავლენა მოახდინოს ყველა ამ მიდგომაზე, არის საიტების გამოყენების ლიმიტების მიღწევა. ჩვეულებრივ API– ში ჩვეულებრივ საკმაოდ კარგად არის დოკუმენტირებული რამდენი მოთხოვნის გაკეთება შეგიძლიათ წუთში ან დღეში და ამის საფუძველზე შეგიძლიათ შეზღუდოთ თქვენი პროექტების მოთხოვნები. როდესაც თქვენ scraping, თქვენ არ იცით, რა არის ეს ლიმიტები, ასე რომ თქვენ რისკის ქვეშ მათი დარტყმა და პოტენციურად დაბლოკვა. მე არ შემიძლია ზუსტი რჩევების მიცემა იმის შესახებ, თუ როგორ უნდა შეიზღუდოს იგი, ასე რომ თქვენ დარჩებით მათ კარგ წიგნებში, მაგრამ მე ვფიქრობ, რომ ყოველ წუთში ყველაფერი ძალიან ხშირად იქნება, გარდა ისეთი შემთხვევებისა, როგორიცაა kickstarter, როდესაც ისინი თითქოსდა ყოველ წამს აკეთებენ თხოვნას.

ნაბიჯი 7: მადლობა კითხვისთვის

ვიმედოვნებთ, რომ ეს ვიდეო დაგეხმარათ, თუ თქვენ დაინტერესებული ხართ მონაცემების გაანალიზებით პირდაპირ ვებ – გვერდებიდან თქვენს ESP8266 ან ESP32. გაქვთ რაიმე სხვა შეკითხვა თემაზე, რომელიც მე არ განვიხილე? გთხოვთ შემატყობინოთ ქვემოთ მოცემულ კომენტარებში, ან შემომიერთდით მე და სხვა რამოდენიმე შემქმნელი ჩემს Discord სერვერზე, სადაც ჩვენ შეგვიძლია განვიხილოთ ეს თემა ან ნებისმიერი სხვა მწარმოებელი, რომელიც თქვენ გაქვთ, ხალხი ნამდვილად გვეხმარება იქ, ასე რომ ეს შესანიშნავი ადგილია დასაკიდებლად გარეთ

ასევე მინდა დიდი მადლობა გადავუხადო ჩემს Github სპონსორებს, რომლებიც მეხმარებიან იმის კეთებაში, რასაც მე ვაკეთებ, მე ნამდვილად ვაფასებ ამას. თუ არ იცით, Github აერთიანებს სპონსორობას პირველი წლის განმავლობაში, ასე რომ, თუ სპონსორობას გააკეთებთ, ისინი 100% -ით ემთხვევა მომდევნო რამდენიმე თვის განმავლობაში.

Მადლობა წაკითხვისთვის!

გირჩევთ: