Trong chương trình Python dùng để gửi dữ liệu lên Server ThingSpeak, có hai mục rất quan trọng mà chúng ta cần phải biết là “Write API Key” và “Field#“. Hai thông tin này cần phải được điều chỉnh chính xác để đảm bảo việc lưu trữ dữ liệu lên Server có thể thực hiện được. Trong phần này chúng ta sẽ sử dụng Server vừa được tạo ra bên trên để thực hiện các bài thí nghiệm.
Tiến hành đăng nhập vào Server ThingSpeak để lấy thông tin về khóa API ghi dữ liệu (Write API Key) và các trường lưu trữ (Field) có trong kênh lưu trữ trên Server. Các thông tin này được minh họa chi tiết trong Hình 4.1.
Hình 4.1. Khóa API ghi dữ liệu và các trường lưu trữ của kênh Test_Data_Server.
Nhằm giúp hiểu rõ hơn cách thức sử dụng ngôn ngữ lập trình Python để viết chương trình gửi dữ liệu lên Server ThingSpeak sử dụng giao thức HTTP, chúng ta sẽ thực hiện một ví dụ minh họa đơn giản như sau: Cứ sau mỗi 20 giây, Raspberry Pi sẽ gửi một dữ liệu ngẫu nhiên (giá trị nằm trong khoảng 0 – 50) lên Server ThingSpeak tại trường lưu trữ “Field1” có tên định danh là “Temparature“.
Mã nguồn hoàn chỉnh cho ví dụ minh họa này như sau:
import httplib, json, urllib
from time import sleep
from random import randint
# Channel ID: 794872
# Author: iotlabiuh
# User API Key: YUPXLTFPBN4TLX9P
# MQTT API Key: IZWFYCHQJKAHM2MU
# API Key (Write): VN9L7BBX6YI4LWJ3
# API Key (Read): VSOKXS2QDTNC3Z3O
# CTC tao chuoi du lieu de gui len Server
### Input – data – Du lieu can gui len Server (noi luu du lieu tren Server la “field1”)
### Output – params – Chuoi du lieu duoc tao ra de gui len Server
def make_param_thingspeak(data):
params = urllib.urlencode({‘field1’: data})
return params
# CTC gui chuoi du lieu len Server ThingSpeak IoT
### Input – params – Chuoi du lieu can gui len Server ThingSpeak IoT
### Output – respone_data – Chuoi du lieu nhan ve tu Server ThingSpeak IoT
Hình 4.2. Minh họa một số lần gửi dữ liệu lên Server của Raspberry Pi.
Bây giờ ta sẽ phân tích chi tiết đoạn mã nguồn này, nó được bắt đầu bằng việc khai báo các thư viện được sử dụng. Trong đó, dòng lệnh đầu tiên chính là dòng khai báo sử dụng các thư viện hỗ trợ để gửi dữ liệu lên Server theo giao thức HTTP.
import httplib, json, urllib
from time import sleep
from random import randint
Tiếp theo là đoạn chương trình con tạo chuỗi dữ liệu để gửi lên Server ThingSpeak. Trong đó, tham số “field1” là tên trường lưu trữ mà ta muốn gửi dữ liệu vào đó, tham số “data” là dữ liệu cần gửi lên Server.
def make_param_thingspeak(data):
params = urllib.urlencode({‘field1’: data})
return params
Tiếp theo là đoạn chương trình con gửi chuỗi dữ liệu lên Server theo giao thức HTTP. Trong đó, tham số “api_key_write” chính là khóa API ghi dữ liệu (Write API Key) được cung cấp từ Server ThingSpeak, chi tiết xem trong Hình 4.1.
Cuối cùng là đoạn chương trình tạo ra các giá trị ngẫu nhiên nằm trong khoảng từ 0 – 50. Các giá trị ngẫu nhiên này sẽ được hiển thị trên màn hình Console và được dùng làm dữ liệu để gửi lên Server sau mỗi 20 giây.
while True:
# Gui du lieu ngau nhien len Server ThingSpeak sau moi 20s
data_random = randint(0,50) # Tao cac gia tri du lieu ngau nhien