Hiện thực chương trình

Một phần của tài liệu Giao trinh iot gateway python (Trang 35 - 36)

Bây giờ, chúng ta chuyển sang làm việc ở filemain.pyđể hiện thực chức năng của chương trình. Từng bước hiện thực trong file này được trình bày chi tiết như bên dưới.

5.1 Import thư viện và khởi tạo

Ở bước này, quan trọng nhất là để kiểm tra lại việc cài đặt thư viện có thực sự hoàn tất hay không. Bên cạnh đó, bạn đọc cũng cần phải điền thông tin cho Feed dữ liệu của mình, cũng như Username và Key của tài khoản. Những dòng lệnh đầu tiên sẽ như sau: import␣sys from␣Adafruit_IO␣import␣MQTTClient AIO_FEED_ID␣=␣"bbc-led" AIO_USERNAME␣=␣"NPNLab_BBC" AIO_KEY␣=␣"aio_radR12aVJMai2YJiGBs1V6TBR06l"

Chương trình 3.1: Import thư viện và khởi tạo

Bạn đọc có thể thực thi chương trình ở filemain.py, bằng cáchnhấn chuột phải vào file này và chọn Run. Từ lần thứ 2, bạn có thể chọn nút Run trên thanh công

cụ của PyCharm.

5.2 Hiện thực hàm chức năng

Việc kết nối giữa IoT Gateway và Server Adafruit dựa trên một giao thức đặc biệt, gọi là MQTT (Message Queuing Telemetry Transport). Đây là một giao thức truyền thông dựa trên cơ chế publish/subscribe, chuyên dụng cho các thiết bị Internet of Things (IoT). Bốn hàm hiện thực tiếp sau đây, phục vụ cho việc vận hành giao thức MQTT tại Gateway IoT. Việc hiện thực các hàm này được trình bày như sau:

def␣␣connected(client):

␣␣␣␣print("Ket␣noi␣thanh␣cong...") ␣␣␣␣client.subscribe(AIO_FEED_ID)

def␣␣subscribe(client␣,␣userdata␣,␣mid␣,␣granted_qos): ␣␣␣␣print("Subcribe␣thanh␣cong...")

def␣␣disconnected(client): ␣␣␣␣print("Ngat␣ket␣noi...") ␣␣␣␣sys.exit␣(1)

def␣␣message(client␣,␣feed_id␣,␣payload): ␣␣␣␣print("Nhan␣du␣lieu:␣"␣+␣payload)

Chương trình 3.2: Các hàm chức năng

Khi kết nối thành công với server, Gateway sẽ subscribe vô một kênh dữ liệu để nhận dữ liệu từ nó. Khi có dữ liệu từ bất cứ nguồn nào gửi lên Feed, dữ liệu này sẽ

được tự động gửi xuống Gateway IoT, và hàm message sẽ tự động chạy mà chúng ta không cần phải xử lý nhiều.

5.3 Cấu hình cho Gateway

Bước cuối cùng trong việc hiện thực Gateway, là tạo ra một đối tượng MQTT Client, đế nó có thể liên kết với các hàm chức năng đã tạo ở trên. Các câu lệnh bổ sung vào chương trình được trình bày như sau:

client␣=␣MQTTClient(AIO_USERNAME␣,␣AIO_KEY) client.on_connect␣=␣connected client.on_disconnect␣=␣disconnected client.on_message␣=␣message client.on_subscribe␣=␣subscribe client.connect() client.loop_blocking()

Chương trình 3.3: Cấu hình cho đối tượng MQTT Client

5.4 Chạy thử chương trình

Bây giờ, chúng ta sẽ cho thực thi file main.pyđể kiểm tra tính năng của nó. Khi vừa được khởi chạy, Gateway sẽ kết nối với server Adafruit IO và sau đó đăng kí (Subscribe) vào kênh FeedBBC_LED. Thông tin như sau sẽ được in ra màn hình

nếu 2 tác vụ này thành công:

Hình 3.15:Gateway kết nối và đăng kí kênh thành công

Bây giờ, bạn đọc có thể mở lại Dashboard của mình và tương tác trên nút nhấn để minh họa cho việc gửi lệnh Bật/Tắt. Gần như ngay lập tức, lệnh này sẽ được chuyển xuống Gateway IoT, như kết quả ở hình bên dưới:

Hình 3.16:Gateway nhận được dữ liệu từ Dashboard

Hiển nhiên, tất các các dữ liệu này đều được lưu lại trên Feed dữ liệu, mà bạn đọc có thể kiểm tra lại dễ dàng.

Một phần của tài liệu Giao trinh iot gateway python (Trang 35 - 36)