Hướng dẫn nhận và gửi chuỗi string bằng Virtual Pin

Vui lòng cập nhật E-Ra App (iOS/Android) lên phiên bản V3.0.4 hoặc mới hơn để sử dụng tính năng này nhé!

I. Hướng dẫn Lập trình (Firmware)

Vui lòng cập nhật ERa library lên phiên bản > 1.2.0

I.1. Nhận chuỗi từ ERa

Để lấy chuỗi từ ERa gửi xuống cần dùng hàm sau:

param.getString();

Bên trong hàm callback:

ERA_WRITE(vPin) {
}

Lưu ý:

Hàm param.getString() trả về kiểu dữ liệu C-style strings (const char*)

Ví dụ (Nhận chuỗi bằng V0):

ERA_WRITE(V0) {
    // Kiểm tra có phải chuỗi hay không
    if (!param.isString()) {
        return;
    }

    // 1. Lấy chuỗi C-style strings
    const char* cstr = param.getString();
    // 2. Lấy chuỗi bằng ERaString
    ERaString estr = param.getString();
    // 3. Lấy chuỗi bằng Arduino String
    String astr = param.getString();
    // 4. Lấy chuỗi bằng std string
    string sstr = param.getString();

    // Dùng 1 trong 4 cách trên để lấy dữ liệu chuỗi
    // Xử lý chuỗi (ví dụ với cách 2)
    if (estr == "on") {
        // Bật LED tại GPIO 2
        digitalWrite(2, HIGH);
    }
    else if (estr == "off") {
        // Tắt LED tại GPIO 2
        digitalWrite(2, LOW);
    }
}

Ngoài ra nếu chuỗi là dạng JSON, có thể dùng hàm sau để parse dữ liệu:

// Hàm này sẽ trả về kiểu dữ liệu ERaJson
param.toJSON();

Ví dụ (Khi nhận chuỗi là dạng JSON):

ERA_WRITE(V0) {
    // Kiểm tra có phải chuỗi hay không
    if (!param.isString()) {
        return;
    }

    // Parse chuỗi sang JSON
    ERaJson ejs = param.toJSON();
    // Kiểm tra có phải JSON hay không
    if (ejs == nullptr) {
        return;
    }

    // {"x":0, "y":0, "msg":"Hi, I'm ERa"}
    // Ví dụ dùng chuỗi JSON trên để in message lên LCD 16x2
    // Lấy giá trị từ key "x" JSON
    int x = ejs["x"].getInt();
    // Lấy giá trị từ key "y" JSON
    int y = ejs["y"].getInt();
    // Lấy giá trị từ key "msg" JSON
    const char* msg = ejs["msg"].getString();

    // Xóa LCD
    lcd.clear();
    // Đưa con trỏ LCD đến tọa độ x, y
    lcd.setCursor(x, y);
    // In message lên LCD
    lcd.print(msg);
}

I.2. Gửi chuỗi lên ERa

Đồi với kiểu dữ liệu C-style strings (char* và const char*)ERaString có thể gửi trực tiếp:

Ví dụ:

// Gửi trực tiếp chuỗi lên ERa
ERa.virtualWrite(V0, "Hi, I'm ERa");

// Gửi chuỗi lên ERa bằng C-style strings (const char*)
const char* value = "Hi, I'm ERa";
ERa.virtualWrite(V0, value);

// Gửi chuỗi lên ERa bằng ERaString
ERaString estr = "Hi, I'm ERa";
ERa.virtualWrite(V0, estr);

Đối với kiểu dữ liệu Arduino Stringstd string cần chuyển sang C-style strings bằng hàm c_str() trước khi gửi lên ERa.

Ví dụ:

// Gửi chuỗi lên ERa bằng Arduino String
String astr = "Hi, I'm ERa";
ERa.virtualWrite(V0, astr.c_str());

// Gửi chuỗi lên ERa bằng std string
string sstr = "Hi, I'm ERa";
ERa.virtualWrite(V0, sstr.c_str());

I.3. Thư viện bỗ trợ cho Terminal Box Widget

Thêm thư viện bằng dòng include sau:

#include <ERa.hpp>
#include <Widgets/ERaWidgets.hpp>

Khai báo Terminal Box như sau:

// Tạo biến ERaString để lưu chuỗi nhận được khi gửi từ ERa
ERaString estr;
// Tạo terminal box trong đó:
// V1 là from datastream
// V2 là to datastream
ERaWidgetTerminalBox terminal(estr, V1, V2);

Tạo hàm callback khi nhận được chuỗi gửi từ ERa:

// Hàm này sẽ được gọi khi nhận được chuỗi từ ERa gửi xuống
void terminalCallback() {
    // Ví dụ khi từ ERa gửi chuỗi "Hi"
    // Chip sẽ phản hồi lại "Hello! Thank you for using ERa."

    // Kiểm tra nếu nhận được chuỗi "Hi"
    if (estr == "Hi") {
        // Đưa chuỗi "Hello! " vào buffer gửi
        terminal.print("Hello! ");
    }
    // Đưa chuỗi "Thank you for using ERa." vào buffer gửi
    terminal.print("Thank you for using ERa.");
    // Gửi chuỗi trong buffer lên ERa
    terminal.flush();
}

Khởi tạo Terminal bằngdòng code sau:

// Khởi tạo Terminal box widget với hàm callback: terminalCallback
terminal.begin(terminalCallback); 
// Đặt hàm trên trước dòng
// ERa.begin(ssid, pass);

II. Hướng dẫn Cấu hình trên Web Dashboard

II.1. Khởi tạo I/O trên gateway

Bước 1: Chọn vào gateway đã vừa khởi tạo thành công.

Bước 2: Chọn vào tab Input/Output pins.

Bước 3: Chọn vào nút setup để bật chế độ Input/Output Pins trên gateway.

Bước 4: Chọn nút Confirm để xác nhận việc khởi tạo tính năng Input/Output pins.

Vậy là quá trình khởi tạo Input/Output pins trên gateway đã thành công tiến đến bước cấu hình config read, write, action để điều khiển thiết bị.

II.2. Cấu hình gửi và nhận chuỗi

Tạo Device mới có tên Text Box: All gateways → Chọn gateway → Input/Output pins → New Input/Output pins.

Đặt tên Device: Text Box → Create.

Tương tự tạo Device mới có tên Terminal Box.

Nhấn vào Device Text Box vừa được tạo.

Đế cấu hình chân ảo cho Device Text Box: chọn mục Virtual Pin → New Virtual Pin.

Đặt tên cho config: String; Pin: V0; Value type: String → nhấn Done.

Tạo hành động cho Text Box: Chọn mục Action → New Action.

Đặt tên cho Action để gửi chuỗi xuống: Down; Pin: V0; Value: 0 → nhấn Save.

Nhấn vào Device Terminal Box ở bên mục Input/Output pin.

Cấu hình ghi chân ảo cho Device Terminal Box: chọn mục Virtual Pin → New Virtual Pin.

Đặt tên cho config: From String; Pin: V1; Value type: String → nhấn Done.

Tiếp tục tạo config thứ 2: To String; Pin: V2; Value type: String → nhấn Done.

Tạo hành động cho Terminal Box: Chọn mục Action → New Action.

Đặt tên cho Action để gửi chuỗi xuống (của Virtual From String): Down From String; Pin: V1; Value: 0 → nhấn Save.

II.3. Cấu hình gửi chuỗi với Text Box

Tạo Widget Text Box: Vào phần Widget box bên trái màn hình chọn Widget Text Box→ Add Widget → Đưa trỏ chuột vào Widget vừa tạo và nhấn vào bánh răng cưa để tiến hành cấu hình.

Sau đó sẽ xuất hiện 1 bảng Setting widget để tiến hành cấu hình như sau:

Cấu hình tên, khu vực và device display xem lại ở phần 2.4.8.

Cấu hình Select datastream.

- Gateway: nhấn chuột vào mũi tên chỉ xuống để chọn gateway mà bạn cần sử dụng ở đây là: E-Ra Huong Dan.

- Device: nhấn chuột vào mũi tên chỉ xuống để chọn thiết bị cần sử dụng Text Box.

- Datastream: nhấn chuột vào mũi tên chỉ xuống để chọn thành phần String.

Cấu hình Select action.

- Gateway: nhấn chuột vào mũi tên chỉ xuống để chọn gateway mà bạn cần sử dụng ở đây là: E-Ra Huong Dan.

- Device: nhấn chuột vào mũi tên chỉ xuống để chọn thiết bị cần sử dụng Text Box.

- Action: nhấn chuột vào mũi tên chỉ xuống để chọn Action Down.

Sau khi thực hiện cấu hình thành công nhấn OK để lưu lại.

II.4. Cấu hình gửi chuỗi với Terminal Box

Tạo Widget Terminal Box: Vào phần Widget box bên trái màn hình chọn Widget Terminal Box → Add Widget → Đưa trỏ chuột vào Widget vừa tạo và nhấn vào “⚙️” để tiến hành cấu hình.

Sau đó sẽ xuất hiện 1 bảng Setting widget để tiến hành cấu hình như sau:

Cấu hình tên, khu vực và device display xem lại ở phần 2.4.8

Cấu hình Select from datastream.

- Gateway: nhấn chuột vào mũi tên chỉ xuống để chọn gateway mà bạn cần sử dụng ở đây là: E-Ra Huong Dan.

- Device: nhấn chuột vào mũi tên chỉ xuống để chọn thiết bị cần sử dụng Terminal Box.

- Datastream: nhấn chuột vào mũi tên chỉ xuống để chọn thành phần From String.

Cấu hình Select to datastream.

- Gateway: nhấn chuột vào mũi tên chỉ xuống để chọn gateway mà bạn cần sử dụng ở đây là: E-Ra Huong Dan.

- Device: nhấn chuột vào mũi tên chỉ xuống để chọn thiết bị cần sử dụng Terminal Box.

- Datastream: nhấn chuột vào mũi tên chỉ xuống để chọn thành phần To String.

Cấu hình Select action.

- Gateway: nhấn chuột vào mũi tên chỉ xuống để chọn gateway mà bạn cần sử dụng ở đây là: E-Ra Huong Dan.

- Device: nhấn chuột vào mũi tên chỉ xuống để chọn thiết bị cần sử dụng Terminal Box.

- Action: nhấn chuột vào mũi tên chỉ xuống để chọn Action Down From String.

Sau khi thực hiện cấu hình thành công nhấn OK đê lưu lại.

Nhấn Done để kết thúc quá trình cấu hình.

Last updated