Signal 信号
Signal 类用于创建和发送信号到 StreamInd 平台。信号是设备向平台上报的事件、数据或状态。
导入
import { Signal } from 'streamind-sdk';const { Signal } = require('streamind-sdk');构造函数
const signal = new Signal(signalType: string)参数:
signalType(string) - 信号类型,使用点分隔的命名空间(如 “sensor.temperature”)
示例:
const signal = new Signal("sensor.temperature");
const statusSignal = new Signal("device.status");
const audioSignal = new Signal("audio.stream");属性
name
signal.name // 只读获取信号的类型名称。
类型:string
示例:
const signal = new Signal("sensor.data");
console.log(signal.name); // 输出: "sensor.data"方法
getPayload
const payload = signal.getPayload(): Payload获取信号的载荷对象,用于添加数据。
返回:
Payload- 载荷对象
示例:
const signal = new Signal("sensor.data");
const payload = signal.getPayload();
payload.setNumber("temperature", 25.5);
payload.setString("unit", "celsius");完整示例
发送传感器数据
import { SDK, Signal } from 'streamind-sdk';
async function sendSensorData(sdk: SDK, terminalId: string) {
// 创建信号
const signal = new Signal("sensor.temperature");
// 添加数据
const payload = signal.getPayload();
payload.setNumber("value", 25.5);
payload.setString("unit", "celsius");
payload.setString("location", "room_01");
// 发送
await sdk.sendSignal(terminalId, signal);
}发送设备状态
const signal = new Signal("device.status");
const payload = signal.getPayload();
payload.setString("status", "online");
payload.setNumber("battery", 85);
payload.setBoolean("charging", true);
await sdk.sendSignal("terminal-1", signal);发送复杂数据
const signal = new Signal("sensor.multi_data");
const payload = signal.getPayload();
// 数字数据
payload.setNumber("temperature", 25.5);
payload.setNumber("humidity", 60.0);
payload.setNumber("pressure", 1013.25);
// 字符串数据
payload.setString("location", "lab_01");
payload.setString("sensor_id", "TH-001");
// 布尔数据
payload.setBoolean("is_calibrated", true);
payload.setBoolean("alarm", false);
await sdk.sendSignal("terminal-1", signal);信号类型命名规范
建议使用清晰的命名空间结构:
// 传感器数据
new Signal("sensor.temperature");
new Signal("sensor.humidity");
new Signal("sensor.pressure");
// 设备状态
new Signal("device.status");
new Signal("device.error");
new Signal("device.heartbeat");
// 音频相关
new Signal("audio.start");
new Signal("audio.stop");
new Signal("audio.chunk");
// 控制指令响应
new Signal("control.ack");
new Signal("control.result");最佳实践
- 清晰命名 - 使用有意义的信号类型名称
- 统一格式 - 在项目中保持命名格式一致
- 数据验证 - 发送前验证数据完整性
- 错误处理 - 捕获发送失败的异常
示例:数据验证
function createValidatedSignal(temperature: number): Signal {
// 创建经过验证的温度信号
if (temperature < -50 || temperature > 150) {
throw new Error(`温度值超出范围: ${temperature}`);
}
const signal = new Signal("sensor.temperature");
const payload = signal.getPayload();
payload.setNumber("value", temperature);
payload.setString("unit", "celsius");
return signal;
}
// 使用
try {
const signal = createValidatedSignal(25.5);
await sdk.sendSignal("terminal-1", signal);
} catch (error) {
console.error(`数据验证失败: ${error.message}`);
}相关 API
- Payload - 载荷数据操作
- SDK.sendSignal() - 发送信号
Last updated on