پیشرفته⏱ 18 دقیقه مطالعه

در درس‌های قبل با MQTT (درس ۱۳) برای ارتباط سبک بین دستگاه‌ها آشنا شدید. اما برای گرفتن اطلاعات از سرویس‌های وب معمولی (مثل یک API آب‌وهوا یا نرخ ارز)، معمولاً به درخواست‌های HTTP نیاز داریم. کتابخانهٔ urequests نسخهٔ سبکی از requests معروف پایتون است.

چرخهٔ یک درخواست HTTP از ESP32 به یک API

ارسال یک درخواست GET

PYTHON
import network
import urequests
from time import sleep

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST", "")
while not wlan.isconnected():
    sleep(1)

response = urequests.get("https://api.publicapis.org/entries")
data = response.json()
print("تعداد رکوردها:", len(data.get("entries", [])))
response.close()
⚠️ هشدار

همیشه پس از استفاده از پاسخ، متد response.close() را صدا بزنید؛ در غیر این صورت حافظهٔ محدود ESP32 به‌مرور پر می‌شود.

ارسال داده با POST

PYTHON
import urequests, ujson

payload = {"sensor": "esp32-academy", "value": 23.5}
headers = {"Content-Type": "application/json"}

response = urequests.post(
    "https://example.com/api/readings",
    data=ujson.dumps(payload),
    headers=headers
)
print("کد پاسخ:", response.status_code)
response.close()
ارسال داده با urequests به یک سرور با ESP32 باز کردن در Wokwi ↗

این یک شبیه‌سازی واقعی و قابل اجراست؛ روی دکمه پخش (▶) در Wokwi بزنید تا کد روی برد مجازی ESP32 اجرا شود.

🛠️ کارگاه عملی

کارگاه عملی: با استفاده از یک API عمومی رایگان (مثل قیمت لحظه‌ای ارز)، هر ۳۰ ثانیه یک مقدار جدید بگیرید و روی نمایشگر OLED (درس ۹) نشان دهید.

❓ پس از پردازش پاسخ یک درخواست HTTP در میکروپایتون، چرا باید ⁦response.close()⁩ را صدا بزنیم؟
طراحی و توسعه: امین شیخ نجدیglcd.ir