Python Cơ Bản Cho IoT
Cơ bản10/1/2024

Python Cơ Bản Cho IoT

Học Python cơ bản dành cho IoT, từ biến, kiểu dữ liệu, điều kiện, vòng lặp, hàm, xử lý file đến cách ứng dụng Python để đọc dữ liệu cảm biến, lưu log, gửi dữ liệu lên server và tự động hóa thiết bị.

PythonProgrammingSerialJSONIoT
891 lượt thích5.7k người đã làm1 giờ 30 phút7 bước
← Quay lại dự án
Hướng dẫn chi tiết

Phần 5: Gửi dữ liệu lên server

1. Giới thiệu về giao thức HTTP và REST API, 2. Sử dụng thư viện requests trong Python, 3. Cách gửi dữ liệu lên server, 4. Ví dụ thực hành: Gửi dữ liệu cảm biến lên một dịch vụ cloud (như ThingSpeak), 5. Kiểm tra phản hồi từ server.

Cập nhật 01/06/2026

Phần 5: Gửi dữ liệu lên server

Trong phần này, chúng ta sẽ tìm hiểu cách gửi dữ liệu từ thiết bị IoT lên server thông qua giao thức HTTP và REST API. Việc này rất quan trọng trong việc thu thập và phân tích dữ liệu từ các cảm biến, đồng thời giúp chúng ta dễ dàng tích hợp với các dịch vụ đám mây.

1. Giới thiệu về giao thức HTTP và REST API

HTTP (HyperText Transfer Protocol) là giao thức truyền tải dữ liệu trên web. Nó cho phép các trình duyệt và server giao tiếp với nhau. Trong ngữ cảnh IoT, chúng ta sử dụng HTTP để gửi và nhận dữ liệu từ các thiết bị.

REST (Representational State Transfer) là một kiến trúc phần mềm cho phép các dịch vụ web tương tác với nhau qua HTTP. REST API sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để thực hiện các thao tác khác nhau trên tài nguyên. Thông thường, khi gửi dữ liệu lên server, chúng ta sẽ sử dụng phương thức POST.

2. Sử dụng thư viện requests trong Python

Để gửi yêu cầu HTTP trong Python, chúng ta sẽ sử dụng thư viện requests. Thư viện này rất dễ sử dụng và cung cấp nhiều tính năng hữu ích để làm việc với HTTP.

Để cài đặt thư viện requests, bạn có thể sử dụng pip:

pip install requests

3. Cách gửi dữ liệu lên server

Để gửi dữ liệu lên server, chúng ta sẽ sử dụng phương thức POST của thư viện requests. Dữ liệu có thể được gửi dưới dạng JSON hoặc form data. Dưới đây là cú pháp cơ bản để gửi dữ liệu:

import requests

url = 'https://example.com/api/data'  # Địa chỉ server
data = {'key1': 'value1', 'key2': 'value2'}  # Dữ liệu cần gửi

response = requests.post(url, json=data)  # Gửi dữ liệu dưới dạng JSON

Trong đoạn mã trên, chúng ta định nghĩa url là địa chỉ của server mà chúng ta muốn gửi dữ liệu đến và data là dữ liệu cần gửi. Phương thức requests.post() sẽ gửi yêu cầu POST đến server với dữ liệu dưới dạng JSON.

4. Ví dụ thực hành: Gửi dữ liệu cảm biến lên một dịch vụ cloud (như ThingSpeak)

Trong ví dụ này, chúng ta sẽ gửi dữ liệu cảm biến nhiệt độ lên dịch vụ ThingSpeak. Đầu tiên, bạn cần tạo một tài khoản trên ThingSpeak và tạo một kênh để nhận dữ liệu.

Khi bạn đã có API Key từ ThingSpeak, bạn có thể sử dụng đoạn mã sau để gửi dữ liệu cảm biến:

import requests
import random
import time

# Thay thế YOUR_API_KEY bằng API Key của bạn
api_key = 'YOUR_API_KEY'
url = f'https://api.thingspeak.com/update?api_key={api_key}'

while True:
    temperature = random.uniform(20.0, 30.0)  # Giả lập dữ liệu cảm biến
    response = requests.get(url + f'&field1={temperature}')  # Gửi dữ liệu
    print(f'Gửi dữ liệu: {temperature} °C, Phản hồi: {response.status_code}')
    time.sleep(15)  # Gửi dữ liệu mỗi 15 giây

Trong đoạn mã này, chúng ta sử dụng một vòng lặp để giả lập dữ liệu cảm biến nhiệt độ. Dữ liệu sẽ được gửi đến ThingSpeak mỗi 15 giây. Đoạn mã cũng in ra phản hồi từ server để xác nhận rằng dữ liệu đã được gửi thành công.

5. Kiểm tra phản hồi từ server

Khi gửi dữ liệu lên server, việc kiểm tra phản hồi là rất quan trọng để đảm bảo rằng dữ liệu đã được gửi thành công. Phản hồi từ server có thể bao gồm mã trạng thái HTTP, thông báo lỗi hoặc thông tin khác.

Trong ví dụ trên, chúng ta đã sử dụng response.status_code để in ra mã trạng thái của phản hồi. Mã trạng thái 200 cho biết yêu cầu đã thành công. Dưới đây là một số mã trạng thái phổ biến bạn nên biết:

  • 200: OK - Yêu cầu thành công.
  • 201: Created - Tài nguyên đã được tạo thành công.
  • 400: Bad Request - Yêu cầu không hợp lệ.
  • 401: Unauthorized - Không có quyền truy cập.
  • 404: Not Found - Tài nguyên không tìm thấy.
  • 500: Internal Server Error - Lỗi phía server.
Lưu ý: Luôn kiểm tra mã trạng thái của phản hồi sau khi gửi dữ liệu để đảm bảo rằng không có lỗi xảy ra trong quá trình truyền tải.

Với những kiến thức đã học trong phần này, bạn đã có thể gửi dữ liệu từ thiết bị IoT lên server một cách dễ dàng. Hãy tiếp tục khám phá và ứng dụng Python trong các dự án IoT của bạn!