mirror of
https://github.com/parnic/node-intellicenter.git
synced 2025-06-17 02:21:53 -05:00
This is capable of broadcasting the request and receiving the response, but is not yet decoding the responses to identify the appropriate one that is the controller. That is forthcoming, and documentation is on the wiki.
83 lines
1.8 KiB
TypeScript
83 lines
1.8 KiB
TypeScript
"use strict";
|
|
|
|
import { WebSocket } from "ws";
|
|
import { v4 as uuidv4 } from "uuid";
|
|
import { FindUnits } from "./finder.js";
|
|
|
|
console.log("searching...");
|
|
const f = new FindUnits();
|
|
await f.searchAsync(5000);
|
|
|
|
// temp. replace with the IP of your device
|
|
const endpoint = "10.0.0.41";
|
|
|
|
let pingTimeout: ReturnType<typeof setTimeout>;
|
|
|
|
console.log("connecting to intellicenter device at", endpoint);
|
|
const client = new WebSocket(`ws://${endpoint}:6680`);
|
|
|
|
const heartbeat = () => {
|
|
clearTimeout(pingTimeout);
|
|
|
|
pingTimeout = setTimeout(() => {
|
|
client.terminate();
|
|
}, 30000 + 1000);
|
|
};
|
|
|
|
client.on("error", console.error);
|
|
client.on("open", heartbeat);
|
|
client.on("ping", heartbeat);
|
|
client.on("close", () => {
|
|
clearTimeout(pingTimeout);
|
|
});
|
|
|
|
client.on("message", (msg: Buffer) => {
|
|
const respObj = JSON.parse(msg.toString()); // eslint-disable-line @typescript-eslint/no-unsafe-assignment
|
|
console.log(JSON.stringify(respObj, null, 2));
|
|
});
|
|
await new Promise((resolve, reject) => {
|
|
client.once("error", reject);
|
|
client.once("open", resolve);
|
|
}).then(() => {
|
|
console.log("connected");
|
|
console.log("sending request...");
|
|
const req = {
|
|
condition: "",
|
|
objectList: [
|
|
{
|
|
objnam: "_5451",
|
|
keys: [
|
|
"VER",
|
|
"MODE",
|
|
"ZIP",
|
|
"TIMZON",
|
|
"PROPNAME",
|
|
"NAME",
|
|
"ADDRESS",
|
|
"CITY",
|
|
"STATE",
|
|
"PHONE",
|
|
"PHONE2",
|
|
"EMAIL",
|
|
"EMAIL2",
|
|
"COUNTRY",
|
|
"PHONE",
|
|
"LOCX",
|
|
"LOCY",
|
|
"AVAIL",
|
|
"SERVICE",
|
|
"UPDATE",
|
|
"PROGRESS",
|
|
"IN",
|
|
"VALVE",
|
|
"HEATING",
|
|
],
|
|
},
|
|
],
|
|
command: "GETPARAMLIST",
|
|
messageID: uuidv4(),
|
|
};
|
|
client.send(JSON.stringify(req));
|
|
client.close();
|
|
});
|