QUY TRÌNH THIẾT KẾ
4.3.1. Các chức năng của app điều khiển
• Giao tiếp được với thiết bị
App điều khiển và thiết bị phải cập nhật được thông tin của nhau và giao tiếp được với nhau thông qua giao thức MQTT theo mơ hình publish/ subscribe và với mơ hình này, thiết bị và app điều khiển sẽ tùy vào chức năng mà đăng ký vào các topic khác nhau để nhận hoặc truyền thông tin đến đối phương. Để có thể thêm nhiều thiết bị vào app điều khiển thì mỗi topic của từng thiết bị sẽ được gắn thêm ID của thiết bị đó. ID của thiết bị
44
được tạo nên từ địa chỉ MAC của module điều khiển trung tâm của thiết bị để đảm bảo ID của từng thiết bị là khác biệt, không trùng nhau. Sau đây là tên của từng topic và chức năng cụ thể của nó:
o "thietbitruyendich/device/will/" + id: Đây là topic mà server đăng ký để gửi tín hiệu online/ offline của thiết bị thơng qua các gói tin acknowledge giữa thiết bị và server MQTT.
o "thietbitruyendich/device/control/" + id: Đây là topic mà thiết bị đăng ký để nhận thông tin điều khiển của app gửi xuống.
o "thietbitruyendich/device/stop/" + id: Đây là topic mà app điều khiển đăng ký để thông báo dừng khẩn cấp khi phát hiện có bóng khí trong khi truyền dịch. App điều khiển khi nhận được thông báo từ topic này sẽ phát thông báo bằng chuông dươi dạng pop up.
o "thietbitruyendich/device/error/" + id: Đây là topic dùng để gửi phản hồi cập nhật thông tin từ thiết bị lên app (tất cả các thông tin được gửi qua đây)
o "thietbitruyendich/app/" + id: Đây là topic để giữa các app có thể cập nhật giá trị khi thay đổi (thông tin bệnh nhân)
Với topic "thietbitruyendich/device/will/" + id, topic này dùng để kiểm tra xem thiết bị cịn hoạt động hay khơng và nó hoạt động như sau: cứ mỗi 10 phút thì thiết bị sẽ gửi một file dưới dạng text gọi là keepalive lên topic này để báo là thiết bị vẫn đang hoạt động và nếu trong 10 phút mà server không nhận được file nào được gửi từ thiết bị thì server sẽ gửi tín hiệu offline xuống cho thiết bị. Và với các topic còn lại giúp đảm bảo việc truyền và nhận thông tin giữa app và thiết bị cũng như xây dựng các chức năng sau đây cho app điều khiển:
o Cập nhật thông số bệnh nhân (số phịng, số gường, tình hình bệnh, ...).
o Gửi lệnh điều khiển cho thiết bị, nhận thông tin điều khiển từ thiết bị.
o Nhận thơng báo khẩn cấp (phát hiện bóng khí) và phát cảnh báo qua chuông.
o Nhận thông báo khi dịch truyền gần hết.
o Khi một app điều khiển thay đổi thơng tin thì các app khác cũng sẽ cập nhật thơng tin thay đổi đó.
45
• Chức năng tạo và quét mã QR
App điều khiển sẽ tạo mã QR bằng ID của thiết bị bằng dòng lệnh UIImage.shareQRCode. Với việc đọc được mã QR, nó phụ thuộc vào camera dùng để quay lại hình ảnh của mã QR và app điều khiển sử dụng AVFoundation framework để triển khai tính năng quét mã QR. Để thực hiện quay theo theo gian thực, ta sử dụng đối tượng AVCaptureMetaDataOutput và thêm đầu vào thiết bị quay video. AVCaptureMetaDataOutput được sử dụng để điều phối luồng dữ liệu từ đầu vào video cho đến đầu ra và là phần cốt lõi để đọc mã QR.