🌱 ESP - MicroPython (3) Get Data from Weather Web
Ở bài viết trước mình đã giới thiệu về cách connect wifi sử dụng ESP8266 - Micropython ở chế độ Station. Ở bài này, mình sẽ thử ứng dụng ESP để lấy dữ liệu từ trên một trang web thời tiết, sau khi đã có kết nối wifi. Để làm được như vậy, yêu cầu người thực hành cần có 1 chút kiến thức rất là cơ bản về web, file json, nhưng cũng chỉ là rất cơ bản thôi!
👉 Giới thiệu website
Đây là trang web cung cấp các API để chúng ta có thể get dữ liệu từ khá nhiều thành phố trên thế giới. Để sử dụng trang web này, các bạn cần đăng ký một tài khoản để sử dụng (Chỉ cần có tài khoản mail vì nó Free).
👉 Để sử dụng trang web này, đơn giản nhất là các bạn bấm vào mục API trên thanh công cụ, giao diện API documentation hiện lên. Lúc này, có thể chọn get dữ liệu theo các mục bên dưới ảnh. Ở đây mình chọn lấy dữ liệu thời tiết theo tên thành phố, mình chọn mục By city name.
Giao diện API hiện lên, ở đây mình có thể chọn 1 trong 3 đường link như trong ảnh:
- city name là tên thành phố cần lấy dữ liệu.
- API key có thể lấy theo cách sau: Ở góc trên bên phải trang web, chúng ta bấm vào phần tên đăng nhập, sau đó chọn My API keys.
Sử dụng đường dẫn trên với 2 thuộc tính city name và API key có được, chúng ta search đường dẫn đó và có được trang web đơn giản với các thông tin về thành phố cần lấy dữ liệu.
Trang web này khá đơn giản với cấu trúc của một file json, chúng ta có thể dễ dàng phân tích nó bằng thư viện ujson.
👉 Get Data bằng ESP - Micropython
Trước khi nghĩ đến get data, chúng ta cần truy cập vào trang web trước, micropython cung cấp thư viện urequests, hoạt động khá giống thư viện requests trong python, để phục vụ mục đích truy cập trang web. Cùng với đó là thư viện ujson trong bài toán này để phân tích trang web thông tin thời tiết.
Việc tiếp theo là lấy đường dẫn của trang web thông tin, với 2 thông tin là city name và API key.
Truy cập vào trang web thông tin, sử dụng methods get(<url>). Đối với trang web này, chúng ta sẽ lấy về được trang web dạng file json, vì vậy, chúng ta có thể lấy các dữ liệu như tên thành phố, nhiệt độ, ... ở trong trang đó, bằng cách sử dụng phương thức json().get(<attribute>).
*** Phần cấu trúc file json và cách phân tích mình sẽ nêu cụ thể trong bài về python - json. Ở đây, chúng ta chỉ tập trung vào ESP - Micropython và lấy dữ liệu về thôi!
Và các bạn hoàn toàn có thể in ra kết quả bằng lệnh print hoặc màn hình khác như LCD, OLED, ...
👉 Các bạn có thể tham khảo phần source code đầy đủ bên dưới đây, cả phần connect wifi và get data, mình đã chuẩn hóa thành các hàm tổng quát để dễ sử dụng.
Chúc các bạn học tập tốt 😊