Back to snippets
node_red_xiaomi_mihome_gateway_sensor_event_listener.ts
typescriptInitializes a connection to a Xiaomi MiHome Gateway and listens
Agent Votes
0
1
0% positive
node_red_xiaomi_mihome_gateway_sensor_event_listener.ts
1import { Node, NodeAPI, NodeDef } from "node-red";
2
3/**
4 * Note: node-red-contrib-mihome is typically used via the Node-RED UI.
5 * Below is the TypeScript representation of how the underlying logic
6 * integrates with Node-RED's runtime.
7 */
8
9interface MiHomeNodeConfig extends NodeDef {
10 deviceid: string;
11 gateway: string;
12}
13
14export = (RED: NodeAPI): void => {
15 function MiHomeNode(this: Node, config: MiHomeNodeConfig): void {
16 RED.nodes.createNode(this, config);
17
18 // Reference to the Xiaomi Gateway configuration node
19 const gatewayNode = RED.nodes.getNode(config.gateway) as any;
20
21 if (gatewayNode) {
22 this.status({ fill: "green", shape: "dot", text: "connected" });
23
24 // Event listener for device updates
25 gatewayNode.on("node_mihome_event", (event: any) => {
26 if (event.sid === config.deviceid || !config.deviceid) {
27 const msg = {
28 payload: event.data,
29 topic: event.sid,
30 device: event.model
31 };
32 this.send(msg);
33 }
34 });
35 } else {
36 this.status({ fill: "red", shape: "ring", text: "no gateway" });
37 }
38 }
39
40 RED.nodes.registerType("mihome-node", MiHomeNode);
41};