-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathyeelight.js
More file actions
38 lines (38 loc) · 1.39 KB
/
yeelight.js
File metadata and controls
38 lines (38 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"use strict";
exports.__esModule = true;
var dgram = require("dgram");
var net_1 = require("net");
var ssdpHost = {
address: "239.255.255.250",
port: 1982
};
var searchMessage = Buffer.from("M-SEARCH * HTTP/1.1\r\nHOST: " + ssdpHost.address + ":" + ssdpHost.port + "\r\nMAN: \"ssdp:discover\"\r\nST: wifi_bulb\r\n");
var devices = new Set();
var socketUdp = dgram.createSocket('udp4');
socketUdp.on('message', (function (msg) {
var location = /Location: yeelight:\/\/(\d+\.\d+\.\d+\.\d+):(\d+)/g.exec(msg);
var address = location[1];
var port = +location[2];
devices.add({ address: address, port: port });
}));
socketUdp.bind(43210, '0.0.0.0');
socketUdp.send(searchMessage, 0, searchMessage.length, ssdpHost.port, ssdpHost.address);
var device = devices.values().next().value;
var socket = new net_1.Socket();
socket.on('data', function (data) {
var result = JSON.parse(data.toString('utf-8'));
console.log(result.result[0] == "ok" ? "Toggled succesfully" : "Error occured.");
socket.destroy();
});
socket.on('close', function () { return console.log("Connection closed"); });
var sendCommand = function (commandObject) {
var stringifiedCommand = JSON.stringify(commandObject);
socket.connect(device.port, device.address);
socket.write(stringifiedCommand + "\r\n");
};
var toggleCommand = {
id: 1,
method: "toggle",
params: []
};
sendCommand(toggleCommand);