ESP32 / ESP8266 MicroPython: HTTP GET požadavek
- March 17 2019
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 1409x Přečteno
Úvod:
Cílem tohoto návodu je vysvětlit jak vykonat http požadavek pomocí MicroPythonu použitím knihovny urequests. Program byl testován jak na ESP32, tak ESP8266. Všechny zdrojové kódy je možné stáhnout zde. Je nutné upozornit na to, že v době psaní článku byl modul urequests součástí základního balíku MicroPythonu. To se může v budoucích verzích změnit a bude nutné ho doinstalovat ručně.
Všechny články o MicroPython a ESP32/ESP8266 najdete na https://chiptron.cz/articles.php?cat_id=23
Pro tento návod je nutné mít zařízení připojené k síti. Připojíme se tedy k WiFi. Pokud nevíte, jak na to, tak koukněte na tento návod. Pro automatické připojení na startu zkuste tento návod.
V tomto návodu budeme zadávat jednotlivé příkazy do příkazové řádky. Pokud by vám tento způsob nevyhovoval, můžete si příkazy psát do scriptu a pouštět ten.
Budeme používat Putty na připojení k příkazové řádce tak, jako v ostatních návodech tohoto seriálu. Pokud nevíte, jak na to, tak koukněte do předchozích dílů.
Programování:
Nejprve je nutné provést import modulu urequests.
import urequests
Pro vytvoření HTTP požadavku stačí pouze zavolat funkci get z načteného urequests modulu. Jejím vstupem je URL adresa. V tomto návodu použijeme ukázkovou adresu (http://jsonplaceholder.typicode.com/albums/1), která na tyto požadavky reaguje tím, že vrátí testovací JSON.
Obrázek 1 – Odpověď serveru
Pro vykonání tohoto požadavku spustíme následující kód:
response = urequests.get('http://jsonplaceholder.typicode.com/albums/1')
print(type(response))
Vidíme, že odpověď je typu Response.
Obrázek 2 – Odpověď serveru
Pro přístup k datům v odpovědi serveru, přistoupíme na jeho vlastnost text.
print(response.text)
print(type(response.text))
Obrázek 3 – Zobrazení detaily odpovědi serveru
Jak je vidět z odpovědi příkazů, tak datový typ vlastnosti text je string. Pro lepší práci s jednotlivými prvky odpovědi se nám bude více hodit zavolat funkci json, která vrací datový typ dictionary. Tento typ nám lépe umožní procházet jednotlivé položky.
parsed = response.json()
print(type(parsed))
Obrázek 4 – Zpracování odpovědi
Jak je možné si všimnout ve zdrojovém kódu této funkce, tak uvnitř používá knihovnu ujson, kterou jsme použili v předchozích dílech.
Zkusíme si nyní přístup k jednotlivým prvkům odpovědi. Výstup je stejný, jaký je možné vidět v prohlížeči.
print(parsed["userId"])
print(parsed["id"])
print(parsed["title"])
Obrázek 5 – Vypsání jednotlivých prvků odpovědi
Jiným způsobem zpracování může být přístup přes vlastnost content, která vrací odpověď jako pole bytů.
print(response.content)
print(type(response.content))
Obrázek 6 – Detail vlastnosti content
Pro automatické zpracování se nám mohou hodit ještě dvě vlastnosti - status (status_code) a výsledek (reason).
print(response.status_code)
print(response.reason)
Všimněte si, že status 200 odpovídá stavu „OK' v řeči HTTP.
Obrázek 7 – Status požadavku
Originální článek je dostupný zde.