Skip to Content

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");

最佳实践

  1. 清晰命名 - 使用有意义的信号类型名称
  2. 统一格式 - 在项目中保持命名格式一致
  3. 数据验证 - 发送前验证数据完整性
  4. 错误处理 - 捕获发送失败的异常

示例:数据验证

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

Last updated on