DeviceScript là một cải tiến tiên tiến từ Microsoft Research. Nó mở rộng khả năng của TypeScript để phù hợp với các thiết bị Internet of Things (IoT) quy mô nhỏ với nguồn tài nguyên hạn chế.
Mục đích chính của nó là cho phép bạn viết mã trong TypeScript và biên dịch nó thành mã byte tùy chỉnh, được tối ưu hóa để triển khai trên các môi trường hạn chế về tài nguyên.
Đầu ra bảng điều khiển trong DeviceScript
Microsoft DeviceScript cung cấp một bảng điều khiển thân thiện với người dùng. Nó hỗ trợ đầu ra thông báo và ghi dữ liệu cảm biến nhưng cũng đóng vai trò là công cụ có giá trị để kiểm tra lỗi.
Bạn có thể tùy ý sử dụng một loạt các chức năng để ghi nhật ký các thông điệp với các cấp độ nhật ký khác nhau:
console.debug("debug")
console.log("log")
console.warn("warn")
console.error("error")
Đầu ra của bàn điều khiển có thể dễ dàng nhìn thấy trong cửa sổ đầu cuối DeviceScript. Nó có thể giúp cung cấp thông tin chi tiết có giá trị về quá trình chạy mã của bạn và hỗ trợ quá trình gỡ lỗi.
Hơn nữa, DeviceScript đơn giản hóa việc ghi dữ liệu cảm biến bằng cách cung cấp console.data tự động thêm dấu thời gian vào dữ liệu đã ghi.
Hãy xem xét ví dụ sau:
const temperature = 20;
const humidity = 60;
console.data({ temperature, humidity });
Để truy cập dữ liệu đã ghi, bạn có thể điều hướng đến DeviceScript – Xuất dữ liệu ngăn trong Visual Studio Code hoặc tải xuống từ menu xem.
Định dạng chuỗi mạnh mẽ
Khi sử dụng console.log() chức năng trong DeviceScript, bạn có nhiều tùy chọn để định dạng chuỗi cho đầu ra nâng cao. Xét các ví dụ minh họa sau:
let x = 0;
let y = 4;
console.log("Greetings, world");
console.log("The value of X is", x, "while Y is", y);
console.log("X=", x, "Y=", y);
console.log(`X=${x} Y=${y}`);
console.log("X=" + x + " Y=" + y);
Trình biên dịch DeviceScript tự động chèn khoảng trắng, dẫn đến đầu ra dễ đọc hơn. Chẳng hạn, ví dụ thứ hai và thứ ba sẽ tạo ra Giá trị của X là 7 trong khi Y là 12 Và X=7 Y=12tương ứng.
Khi ghi vào sổ đăng ký, bạn cũng có thể sử dụng phép nối và mẫu chữ. Hãy xem xét đoạn mã sau:
const screen = new ds.CharacterScreen();
let x = 7;
screen.message.write("The value of X is " + x);
screen.message.write(`X is equal to ${x}`);
Sử dụng phép nối hoặc mẫu chữ, bạn có thể dễ dàng xây dựng các chuỗi động để đáp ứng nhiều yêu cầu khác nhau.
Hơn nữa, DeviceScript cung cấp ds.format() chức năng định dạng chuỗi nâng cao. Bạn có thể sử dụng chức năng này kết hợp với console.log() hoặc khi cấu hình thanh ghi chuỗi.
Chỉ định trình giữ chỗ cho các đối số bằng cách sử dụng định dạng {0}, {1}, {2}, và kể từ đó trở đi. Bạn cũng có thể chỉ định độ chính xác bằng cách nối thêm chữ số thứ hai.
Quan sát ví dụ sau:
const screen = new ds.CharacterScreen();
let x = 7;
let y = 12;
console.log(ds.format("X is {0} and Y is {1}", x, y));
console.log(ds.format("X = {04}", x));
screen.message.write(ds.format("X is approximately {0}", x));
Hãy nhớ rằng việc chỉ định độ chính xác bằng chữ số thứ hai có thể không mang lại kết quả hoàn hảo trong mọi tình huống.
Khách hàng: Kích hoạt tương tác với cảm biến và bộ truyền động
Hệ sinh thái DeviceScript trừu tượng hóa sự tương tác với các cảm biến, bộ truyền động và các thành phần phần cứng khác thông qua các dịch vụ Jacdac.
Khung này coi các cảm biến là máy chủ, trong khi tập lệnh của bạn kết nối máy khách với các máy chủ này để tạo điều kiện tương tác. Để minh họa cho khái niệm này, hãy xem xét kịch bản của bộ điều khiển hệ thống sưởi ấm trong nhà.
Hệ thống sưởi ấm bao gồm một rơle điều chỉnh hoạt động của lò, cảm biến nhiệt độ và bộ mã hóa vòng quay để điều chỉnh nhiệt độ mong muốn. Trong DeviceScript, bạn xác định máy khách, còn được gọi là vai trò, cho mỗi dịch vụ được yêu cầu.
Hãy xem đoạn mã sau:
import { Temperature, Relay } from "@devicescript/core";
const thermometer = new Temperature();
const thermometer2 = new Temperature();
const relay = new Relay();
Bằng cách khởi tạo các ứng dụng khách dịch vụ cần thiết, chẳng hạn như nhiệt kế, nhiệt kế2Và tiếp sứcbạn thiết lập liên lạc liền mạch với các máy chủ tương ứng.
Máy chủ phần cứng DeviceScript
Để tương tác với bất kỳ thành phần phần cứng nào trong DeviceScript, bạn sử dụng ứng dụng khách dịch vụ. Tuy nhiên, để lập trình hiệu quả các thành phần phần cứng này, bắt buộc phải khởi tạo các máy chủ dịch vụ trên phần cứng bên dưới.
DeviceScript cung cấp một loạt các máy chủ trong @devicescript/máy chủ mô-đun, do đó hợp lý hóa quá trình này.
Ví dụ, các nút bắt đầu chức năng cho phép bạn triển khai một máy chủ nút trên một chốt cụ thể và lấy ứng dụng khách tương ứng. Quan sát ví dụ sau:
import { gpio } from "@devicescript/core";
import { startButton } from "@devicescript/servers";
const buttonA = startButton({ pin: gpio(2),});
Bằng cách kết hợp đoạn mã này vào tập lệnh của mình, bạn có khả năng tương tác với chân 2 (số nhận dạng dành riêng cho phần cứng) thông qua nút MỘT khách hàng. Sau đó, bạn có thể đăng ký các sự kiện như nhấn nút và thực hiện các hành động cụ thể trong ứng dụng IoT của mình.
Trao quyền cho sự phát triển IoT với DeviceScript
DeviceScript cho phép bạn tận dụng TypeScript cho các thiết bị IoT nhỏ, tối ưu hóa mã cho các môi trường hạn chế. Đầu ra bảng điều khiển của nó đơn giản hóa việc ghi nhật ký và trực quan hóa dữ liệu. Bằng cách trừu tượng hóa tương tác phần cứng thông qua các dịch vụ Jacdec, nó hợp lý hóa việc giao tiếp với các cảm biến và bộ truyền động.
Được tích hợp với Visual Studio Code, DeviceScript cung cấp một môi trường toàn diện để phát triển, làm cho nó trở thành một công cụ có giá trị cho các giải pháp IoT hiệu quả và an toàn. Với DeviceScript và Visual Studio Code, bạn có thể tự tin xây dựng các giải pháp IoT không chỉ hiệu quả mà còn duy trì mức độ bảo mật cao trong toàn bộ quá trình phát triển.