50 lines
2.1 KiB
TypeScript
50 lines
2.1 KiB
TypeScript
import { defineDevices, defineRule } from "../../src/index.ts";
|
|
|
|
const devices = defineDevices({
|
|
corridorLight: {
|
|
did: "group.1815373077765824512",
|
|
urn: "urn:miot-spec-v2:device:light:0000A001:mijia-group3:3:0000C802",
|
|
name: "走廊筒灯",
|
|
},
|
|
corridorMotion: {
|
|
did: "blt.3.1htiptpdgco00",
|
|
urn: "urn:miot-spec-v2:device:motion-sensor:0000A014:xiaomi-pir1:2",
|
|
name: "走廊人体传感器",
|
|
},
|
|
gateway: {
|
|
did: "1104758822",
|
|
urn: "urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:3",
|
|
name: "中枢网关",
|
|
},
|
|
});
|
|
|
|
export const eventTurnOn = defineRule("示例-事件触发开灯", ({ device, on }) =>
|
|
on(device(devices.corridorMotion).event({ siid: 2, eiid: 1008 }))
|
|
.do(device(devices.corridorLight).set({ siid: 2, piid: 1, value: true })),
|
|
);
|
|
|
|
export const propertyTurnOff = defineRule("示例-属性触发关灯", ({ device, on }) =>
|
|
on(device(devices.corridorLight).propertyTrigger({ siid: 2, piid: 1, dtype: "boolean", operator: "=", value: true }))
|
|
.do(device(devices.corridorLight).set({ siid: 2, piid: 1, value: false })),
|
|
);
|
|
|
|
export const conditionBeforeAction = defineRule("示例-状态判断后动作", ({ device, on }) =>
|
|
on(device(devices.corridorMotion).event({ siid: 2, eiid: 1008 }))
|
|
.when(device(devices.corridorLight).get({ siid: 2, piid: 1, dtype: "boolean", operator: "=", value: false }))
|
|
.do(device(devices.corridorLight).set({ siid: 2, piid: 1, value: true })),
|
|
);
|
|
|
|
export const mergedTriggers = defineRule("示例-多触发合并", ({ device, onAny }) =>
|
|
onAny(
|
|
device(devices.corridorMotion).event({ siid: 2, eiid: 1008 }),
|
|
device(devices.gateway).event({ siid: 4, eiid: 1 }),
|
|
).do(device(devices.corridorLight).set({ siid: 2, piid: 2, value: 100 })),
|
|
);
|
|
|
|
export const delayedAction = defineRule("示例-延时动作", ({ delay, device, on }) =>
|
|
on(device(devices.corridorMotion).event({ siid: 2, eiid: 1008 }))
|
|
.do(delay("5s"), device(devices.corridorLight).set({ siid: 2, piid: 1, value: false })),
|
|
);
|
|
|
|
export default [eventTurnOn, propertyTurnOff, conditionBeforeAction, mergedTriggers, delayedAction];
|