@bobfrankston/lxlan 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +5 -0
- package/client.d.ts +36 -18
- package/client.d.ts.map +1 -1
- package/client.js +92 -35
- package/client.js.map +1 -1
- package/device.d.ts +58 -4
- package/device.d.ts.map +1 -1
- package/device.js +111 -11
- package/device.js.map +1 -1
- package/events.d.ts +24 -0
- package/events.d.ts.map +1 -0
- package/events.js +7 -0
- package/events.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +14 -6
- package/protocol.d.ts +23 -0
- package/protocol.d.ts.map +1 -1
- package/protocol.js +27 -0
- package/protocol.js.map +1 -1
- package/transport.d.ts +30 -0
- package/transport.d.ts.map +1 -0
- package/transport.js +9 -0
- package/transport.js.map +1 -0
- package/types.d.ts +13 -0
- package/types.d.ts.map +1 -1
- package/types.js +8 -0
- package/types.js.map +1 -1
- package/.claude/settings.local.json +0 -13
- package/client.ts +0 -214
- package/device.ts +0 -170
- package/index.ts +0 -4
- package/notes.md +0 -530
- package/protocol.ts +0 -209
- package/tsconfig.json +0 -20
- package/types.ts +0 -129
package/device.js
CHANGED
|
@@ -4,13 +4,17 @@ import { encodeMessage, encodeSetPower, encodeSetColor, encodeSetLabel, encodeSe
|
|
|
4
4
|
/**
|
|
5
5
|
* Represents a LIFX device on the LAN.
|
|
6
6
|
* State is cached and updated via events from LxClient.
|
|
7
|
+
*
|
|
8
|
+
* **IMPORTANT:** Do not create devices directly with `new LxDevice()`.
|
|
9
|
+
* Always use `client.addDevice(mac, ip)` or obtain devices from `client.devices`.
|
|
10
|
+
* Directly instantiated devices will not have a transport and will fail at runtime.
|
|
7
11
|
*/
|
|
8
12
|
export class LxDevice {
|
|
9
13
|
/** MAC address (lowercase, colon-separated) */
|
|
10
14
|
mac;
|
|
11
15
|
/** Current IP address */
|
|
12
16
|
ip;
|
|
13
|
-
/** UDP port (default 56700) */
|
|
17
|
+
/** UDP port (default LIFX_PORT = 56700) */
|
|
14
18
|
port = LIFX_PORT;
|
|
15
19
|
/** Power state (true = on) */
|
|
16
20
|
power = false;
|
|
@@ -26,22 +30,60 @@ export class LxDevice {
|
|
|
26
30
|
vendor = 0;
|
|
27
31
|
/** Product ID (see Products table) */
|
|
28
32
|
product = 0;
|
|
33
|
+
/** Firmware version (encoded as 0x00RRMMPP) */
|
|
34
|
+
firmwareVersion;
|
|
35
|
+
/** WiFi signal strength (0.0 to 1.0) */
|
|
36
|
+
signal;
|
|
37
|
+
/** RSSI in dBm (calculated from signal) */
|
|
38
|
+
rssi;
|
|
39
|
+
/** Device uptime in milliseconds */
|
|
40
|
+
uptime;
|
|
41
|
+
/** Device downtime in milliseconds */
|
|
42
|
+
downtime;
|
|
29
43
|
/** Group membership */
|
|
30
44
|
group = { id: '', label: '', updatedAt: 0 };
|
|
31
45
|
/** Location membership */
|
|
32
46
|
location = { id: '', label: '', updatedAt: 0 };
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
/** Recent message sequences for deduplication (sequence -> timestamp) */
|
|
48
|
+
recentSequences = new Map();
|
|
49
|
+
transport;
|
|
50
|
+
/**
|
|
51
|
+
* Create a LIFX device
|
|
52
|
+
*
|
|
53
|
+
* **WARNING:** This constructor is for internal use by LxClient.
|
|
54
|
+
* Do not call directly - use `client.addDevice(mac, ip)` instead.
|
|
55
|
+
* Devices created directly will not have a transport and will throw errors when used.
|
|
56
|
+
*
|
|
57
|
+
* @param mac - MAC address (will be normalized to lowercase)
|
|
58
|
+
* @param ip - IP address (optional, can be discovered)
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
constructor(mac, ip) {
|
|
35
62
|
this.mac = mac.toLowerCase();
|
|
36
|
-
this.ip = ip;
|
|
37
|
-
|
|
63
|
+
this.ip = ip || '';
|
|
64
|
+
}
|
|
65
|
+
/** Throw error if transport is not set */
|
|
66
|
+
requireTransport() {
|
|
67
|
+
if (!this.transport)
|
|
68
|
+
throw new Error(`Device ${this.mac} has no UDP transport - cannot send. Use lxlan-node or lxlan-http.`);
|
|
69
|
+
}
|
|
70
|
+
/** Throw error if IP address is not set */
|
|
71
|
+
requireIP() {
|
|
72
|
+
if (!this.ip)
|
|
73
|
+
throw new Error(`Device ${this.mac} has no IP address - cannot send. Perform discovery or add device with IP using client.addDevice(mac, ip).`);
|
|
38
74
|
}
|
|
39
75
|
/** Get product name from product ID */
|
|
40
76
|
get productName() {
|
|
41
77
|
return Products[this.product] ?? `Unknown (${this.product})`;
|
|
42
78
|
}
|
|
79
|
+
/** Set the transport (used by LxClient when managing devices) */
|
|
80
|
+
setTransport(transport) {
|
|
81
|
+
this.transport = transport;
|
|
82
|
+
}
|
|
43
83
|
/** Send raw message to device */
|
|
44
84
|
send(type, payload) {
|
|
85
|
+
this.requireTransport();
|
|
86
|
+
this.requireIP();
|
|
45
87
|
const msg = encodeMessage({
|
|
46
88
|
type,
|
|
47
89
|
target: this.mac,
|
|
@@ -49,17 +91,18 @@ export class LxDevice {
|
|
|
49
91
|
ackRequired: false,
|
|
50
92
|
resRequired: true
|
|
51
93
|
});
|
|
52
|
-
this.
|
|
94
|
+
this.transport.send(this.ip, this.port, msg);
|
|
53
95
|
}
|
|
54
96
|
/** Set power on/off */
|
|
55
97
|
setPower(on) {
|
|
98
|
+
this.requireTransport();
|
|
56
99
|
const msg = encodeMessage({
|
|
57
100
|
type: MessageType.SetPower,
|
|
58
101
|
target: this.mac,
|
|
59
102
|
payload: encodeSetPower(on),
|
|
60
103
|
ackRequired: true
|
|
61
104
|
});
|
|
62
|
-
this.
|
|
105
|
+
this.transport.send(this.ip, this.port, msg);
|
|
63
106
|
}
|
|
64
107
|
/**
|
|
65
108
|
* Set color - accepts flexible input formats
|
|
@@ -67,6 +110,7 @@ export class LxDevice {
|
|
|
67
110
|
* @param duration - Transition time in milliseconds (default 0)
|
|
68
111
|
*/
|
|
69
112
|
setColor(color, duration = 0) {
|
|
113
|
+
this.requireTransport();
|
|
70
114
|
const hsbk = parseColor(color);
|
|
71
115
|
const hsbk16 = hsbkTo16(hsbk);
|
|
72
116
|
const msg = encodeMessage({
|
|
@@ -75,7 +119,7 @@ export class LxDevice {
|
|
|
75
119
|
payload: encodeSetColor(hsbk16, duration),
|
|
76
120
|
ackRequired: true
|
|
77
121
|
});
|
|
78
|
-
this.
|
|
122
|
+
this.transport.send(this.ip, this.port, msg);
|
|
79
123
|
}
|
|
80
124
|
/**
|
|
81
125
|
* Set white color temperature
|
|
@@ -96,13 +140,14 @@ export class LxDevice {
|
|
|
96
140
|
}
|
|
97
141
|
/** Set label */
|
|
98
142
|
setLabel(label) {
|
|
143
|
+
this.requireTransport();
|
|
99
144
|
const msg = encodeMessage({
|
|
100
145
|
type: MessageType.SetLabel,
|
|
101
146
|
target: this.mac,
|
|
102
147
|
payload: encodeSetLabel(label),
|
|
103
148
|
ackRequired: true
|
|
104
149
|
});
|
|
105
|
-
this.
|
|
150
|
+
this.transport.send(this.ip, this.port, msg);
|
|
106
151
|
}
|
|
107
152
|
/** Query label */
|
|
108
153
|
getLabel() {
|
|
@@ -110,13 +155,14 @@ export class LxDevice {
|
|
|
110
155
|
}
|
|
111
156
|
/** Set group */
|
|
112
157
|
setGroup(id, label) {
|
|
158
|
+
this.requireTransport();
|
|
113
159
|
const msg = encodeMessage({
|
|
114
160
|
type: MessageType.SetGroup,
|
|
115
161
|
target: this.mac,
|
|
116
162
|
payload: encodeSetGroup(id, label),
|
|
117
163
|
ackRequired: true
|
|
118
164
|
});
|
|
119
|
-
this.
|
|
165
|
+
this.transport.send(this.ip, this.port, msg);
|
|
120
166
|
}
|
|
121
167
|
/** Query group */
|
|
122
168
|
getGroup() {
|
|
@@ -124,13 +170,14 @@ export class LxDevice {
|
|
|
124
170
|
}
|
|
125
171
|
/** Set location */
|
|
126
172
|
setLocation(id, label) {
|
|
173
|
+
this.requireTransport();
|
|
127
174
|
const msg = encodeMessage({
|
|
128
175
|
type: MessageType.SetLocation,
|
|
129
176
|
target: this.mac,
|
|
130
177
|
payload: encodeSetLocation(id, label),
|
|
131
178
|
ackRequired: true
|
|
132
179
|
});
|
|
133
|
-
this.
|
|
180
|
+
this.transport.send(this.ip, this.port, msg);
|
|
134
181
|
}
|
|
135
182
|
/** Query location */
|
|
136
183
|
getLocation() {
|
|
@@ -140,10 +187,63 @@ export class LxDevice {
|
|
|
140
187
|
getVersion() {
|
|
141
188
|
this.send(MessageType.GetVersion);
|
|
142
189
|
}
|
|
190
|
+
/** Query host info (signal, tx, rx) */
|
|
191
|
+
getHostInfo() {
|
|
192
|
+
this.send(MessageType.GetHostInfo);
|
|
193
|
+
}
|
|
194
|
+
/** Query host firmware */
|
|
195
|
+
getHostFirmware() {
|
|
196
|
+
this.send(MessageType.GetHostFirmware);
|
|
197
|
+
}
|
|
198
|
+
/** Query WiFi info */
|
|
199
|
+
getWifiInfo() {
|
|
200
|
+
this.send(MessageType.GetWifiInfo);
|
|
201
|
+
}
|
|
202
|
+
/** Query device info (uptime, downtime) */
|
|
203
|
+
getInfo() {
|
|
204
|
+
this.send(MessageType.GetInfo);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Query all device information
|
|
208
|
+
* Sends multiple requests to gather comprehensive device metadata.
|
|
209
|
+
* Listen for 'deviceInfo' event on client to get results.
|
|
210
|
+
*/
|
|
211
|
+
getDeviceInfo() {
|
|
212
|
+
this.getVersion();
|
|
213
|
+
this.getLabel();
|
|
214
|
+
this.getGroup();
|
|
215
|
+
this.getLocation();
|
|
216
|
+
this.getHostFirmware();
|
|
217
|
+
this.getWifiInfo();
|
|
218
|
+
this.getInfo();
|
|
219
|
+
this.getState();
|
|
220
|
+
}
|
|
143
221
|
/** Update last seen timestamp and online status */
|
|
144
222
|
markSeen() {
|
|
145
223
|
this.lastSeen = Date.now();
|
|
146
224
|
this.online = true;
|
|
147
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Check if message is a duplicate based on sequence number.
|
|
228
|
+
* LIFX devices sometimes send duplicate responses.
|
|
229
|
+
* @param sequence - Message sequence number
|
|
230
|
+
* @returns true if duplicate (already seen recently)
|
|
231
|
+
*/
|
|
232
|
+
isDuplicate(sequence) {
|
|
233
|
+
const now = Date.now();
|
|
234
|
+
const DUPLICATE_WINDOW_MS = 2000; // 2 second window
|
|
235
|
+
// Clean old entries
|
|
236
|
+
for (const [seq, timestamp] of this.recentSequences.entries()) {
|
|
237
|
+
if (now - timestamp > DUPLICATE_WINDOW_MS) {
|
|
238
|
+
this.recentSequences.delete(seq);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Check if we've seen this sequence recently
|
|
242
|
+
if (this.recentSequences.has(sequence)) {
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
this.recentSequences.set(sequence, now);
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
148
248
|
}
|
|
149
249
|
//# sourceMappingURL=device.js.map
|
package/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EAAa,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEjI
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["device.ts"],"names":[],"mappings":"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"}
|
package/events.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal EventEmitter interface for browser compatibility
|
|
3
|
+
* Node.js implementations can use node:events directly
|
|
4
|
+
* Browser implementations can provide their own or use a library
|
|
5
|
+
*/
|
|
6
|
+
export interface LxEventEmitter {
|
|
7
|
+
on(event: string, listener: (...args: any[]) => void): this;
|
|
8
|
+
once(event: string, listener: (...args: any[]) => void): this;
|
|
9
|
+
off(event: string, listener: (...args: any[]) => void): this;
|
|
10
|
+
emit(event: string, ...args: any[]): boolean;
|
|
11
|
+
removeAllListeners(event?: string): this;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Base class for objects that emit events
|
|
15
|
+
* This is platform-agnostic and can be implemented for Node.js or browser
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class LxEventEmitterBase implements LxEventEmitter {
|
|
18
|
+
abstract on(event: string, listener: (...args: any[]) => void): this;
|
|
19
|
+
abstract once(event: string, listener: (...args: any[]) => void): this;
|
|
20
|
+
abstract off(event: string, listener: (...args: any[]) => void): this;
|
|
21
|
+
abstract emit(event: string, ...args: any[]): boolean;
|
|
22
|
+
abstract removeAllListeners(event?: string): this;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=events.d.ts.map
|
package/events.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC7C,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;GAGG;AACH,8BAAsB,kBAAmB,YAAW,cAAc;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IACtE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IACrE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IACrD,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;CACpD"}
|
package/events.js
ADDED
package/events.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["events.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,MAAM,OAAgB,kBAAkB;CAMvC"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
2
|
export { LxDevice } from './device.js';
|
|
3
3
|
export { LxClient, LxClientOptions } from './client.js';
|
|
4
|
+
export { LxTransport, RemoteInfo } from './transport.js';
|
|
5
|
+
export { LxEventEmitter, LxEventEmitterBase } from './events.js';
|
|
4
6
|
export { encodeMessage, decodeMessage } from './protocol.js';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
package/index.js
CHANGED
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAmB,MAAM,aAAa,CAAC;AAExD,OAAO,EAAkB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/lxlan",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "LIFX LAN protocol library for device control via UDP",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -13,19 +13,27 @@
|
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
15
|
"build": "tsc",
|
|
16
|
-
"watch": "tsc -w"
|
|
16
|
+
"watch": "tsc -w",
|
|
17
|
+
"preversion": "npm run build",
|
|
18
|
+
"postversion": "git push && git push --tags && npm publish",
|
|
19
|
+
"release": "git add -A && git diff-index --quiet HEAD || git commit -m 'Build for release' && npm version patch"
|
|
17
20
|
},
|
|
18
|
-
"keywords": [
|
|
21
|
+
"keywords": [
|
|
22
|
+
"lifx",
|
|
23
|
+
"lan",
|
|
24
|
+
"udp",
|
|
25
|
+
"smart-home",
|
|
26
|
+
"lighting"
|
|
27
|
+
],
|
|
19
28
|
"license": "MIT",
|
|
20
29
|
"repository": {
|
|
21
30
|
"type": "git",
|
|
22
31
|
"url": "https://github.com/BobFrankston/lxlan.git"
|
|
23
32
|
},
|
|
24
33
|
"dependencies": {
|
|
25
|
-
"@bobfrankston/colorlib": "
|
|
26
|
-
"@bobfrankston/lxudp": "^0.1.0"
|
|
34
|
+
"@bobfrankston/colorlib": "file:../../../../utils/colorlib"
|
|
27
35
|
},
|
|
28
36
|
"devDependencies": {
|
|
29
|
-
"@types/node": "
|
|
37
|
+
"@types/node": "^25.0.6"
|
|
30
38
|
}
|
|
31
39
|
}
|
package/protocol.d.ts
CHANGED
|
@@ -53,4 +53,27 @@ export declare function decodeStateService(payload: Buffer): {
|
|
|
53
53
|
service: number;
|
|
54
54
|
port: number;
|
|
55
55
|
};
|
|
56
|
+
/** Decode StateHostInfo (13) payload */
|
|
57
|
+
export declare function decodeStateHostInfo(payload: Buffer): {
|
|
58
|
+
signal: number;
|
|
59
|
+
tx: number;
|
|
60
|
+
rx: number;
|
|
61
|
+
};
|
|
62
|
+
/** Decode StateHostFirmware (15) payload */
|
|
63
|
+
export declare function decodeStateHostFirmware(payload: Buffer): {
|
|
64
|
+
build: number;
|
|
65
|
+
version: number;
|
|
66
|
+
};
|
|
67
|
+
/** Decode StateWifiInfo (17) payload - same format as StateHostInfo */
|
|
68
|
+
export declare function decodeStateWifiInfo(payload: Buffer): {
|
|
69
|
+
signal: number;
|
|
70
|
+
tx: number;
|
|
71
|
+
rx: number;
|
|
72
|
+
};
|
|
73
|
+
/** Decode StateInfo (35) payload */
|
|
74
|
+
export declare function decodeStateInfo(payload: Buffer): {
|
|
75
|
+
time: number;
|
|
76
|
+
uptime: number;
|
|
77
|
+
downtime: number;
|
|
78
|
+
};
|
|
56
79
|
//# sourceMappingURL=protocol.d.ts.map
|
package/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAsC,MAAM,YAAY,CAAC;AAK3E,gDAAgD;AAChD,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,2BAA2B;AAC3B,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAqBD,oCAAoC;AACpC,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,CAAE,uCAAuC;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAiCT;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAgCpD;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAIlD;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CASzE;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWhE;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAW3F;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,uCAAuC;AACvC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAMxG;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMlG;AAED,sCAAsC;AACtC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAKrF"}
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["protocol.ts"],"names":[],"mappings":"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"}
|
package/protocol.js
CHANGED
|
@@ -171,4 +171,31 @@ export function decodeStateService(payload) {
|
|
|
171
171
|
port: payload.readUInt32LE(1)
|
|
172
172
|
};
|
|
173
173
|
}
|
|
174
|
+
/** Decode StateHostInfo (13) payload */
|
|
175
|
+
export function decodeStateHostInfo(payload) {
|
|
176
|
+
return {
|
|
177
|
+
signal: payload.readFloatLE(0),
|
|
178
|
+
tx: payload.readUInt32LE(4),
|
|
179
|
+
rx: payload.readUInt32LE(8)
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/** Decode StateHostFirmware (15) payload */
|
|
183
|
+
export function decodeStateHostFirmware(payload) {
|
|
184
|
+
return {
|
|
185
|
+
build: Number(payload.readBigUInt64LE(0)), // nanoseconds since epoch
|
|
186
|
+
version: payload.readUInt32LE(8) // encoded as hex: 0x00RRMMPP (major.minor.patch)
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/** Decode StateWifiInfo (17) payload - same format as StateHostInfo */
|
|
190
|
+
export function decodeStateWifiInfo(payload) {
|
|
191
|
+
return decodeStateHostInfo(payload);
|
|
192
|
+
}
|
|
193
|
+
/** Decode StateInfo (35) payload */
|
|
194
|
+
export function decodeStateInfo(payload) {
|
|
195
|
+
return {
|
|
196
|
+
time: Number(payload.readBigUInt64LE(0) / BigInt(1000000)), // ns to ms
|
|
197
|
+
uptime: Number(payload.readBigUInt64LE(8) / BigInt(1000000)), // ns to ms
|
|
198
|
+
downtime: Number(payload.readBigUInt64LE(16) / BigInt(1000000)) // ns to ms
|
|
199
|
+
};
|
|
200
|
+
}
|
|
174
201
|
//# sourceMappingURL=protocol.js.map
|
package/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["protocol.ts"],"names":[],"mappings":"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"}
|
package/transport.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport abstraction for LIFX LAN protocol
|
|
3
|
+
* Allows different implementations:
|
|
4
|
+
* - UDP (current: rmfudp)
|
|
5
|
+
* - HTTP (future: for web/browser support)
|
|
6
|
+
* - WebSocket (future: bidirectional web support)
|
|
7
|
+
*/
|
|
8
|
+
/** Remote endpoint information */
|
|
9
|
+
export interface RemoteInfo {
|
|
10
|
+
address: string;
|
|
11
|
+
port: number;
|
|
12
|
+
}
|
|
13
|
+
/** Transport layer interface */
|
|
14
|
+
export interface LxTransport {
|
|
15
|
+
/** Bind/start the transport */
|
|
16
|
+
bind(): Promise<void>;
|
|
17
|
+
/** Close/stop the transport */
|
|
18
|
+
close(): void;
|
|
19
|
+
/** Send data to specific address */
|
|
20
|
+
send(ip: string, port: number, data: Buffer): void;
|
|
21
|
+
/** Broadcast data to all addresses */
|
|
22
|
+
broadcast(data: Buffer, port: number, addresses: string[]): void;
|
|
23
|
+
/** Register message handler */
|
|
24
|
+
onMessage(handler: (data: Buffer, rinfo: RemoteInfo) => void): void;
|
|
25
|
+
/** Register error handler */
|
|
26
|
+
onError(handler: (err: Error) => void): void;
|
|
27
|
+
/** Register close handler */
|
|
28
|
+
onClose(handler: () => void): void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kCAAkC;AAClC,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,gCAAgC;AAChC,MAAM,WAAW,WAAW;IACxB,+BAA+B;IAC/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAAC;IAEd,oCAAoC;IACpC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD,sCAAsC;IACtC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEjE,+BAA+B;IAC/B,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAEpE,6BAA6B;IAC7B,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAE7C,6BAA6B;IAC7B,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACtC"}
|
package/transport.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport abstraction for LIFX LAN protocol
|
|
3
|
+
* Allows different implementations:
|
|
4
|
+
* - UDP (current: rmfudp)
|
|
5
|
+
* - HTTP (future: for web/browser support)
|
|
6
|
+
* - WebSocket (future: bidirectional web support)
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=transport.js.map
|
package/transport.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/types.d.ts
CHANGED
|
@@ -3,6 +3,12 @@ import { HSBK } from '@bobfrankston/colorlib';
|
|
|
3
3
|
export declare const MessageType: {
|
|
4
4
|
readonly GetService: 2;
|
|
5
5
|
readonly StateService: 3;
|
|
6
|
+
readonly GetHostInfo: 12;
|
|
7
|
+
readonly StateHostInfo: 13;
|
|
8
|
+
readonly GetHostFirmware: 14;
|
|
9
|
+
readonly StateHostFirmware: 15;
|
|
10
|
+
readonly GetWifiInfo: 16;
|
|
11
|
+
readonly StateWifiInfo: 17;
|
|
6
12
|
readonly GetPower: 20;
|
|
7
13
|
readonly SetPower: 21;
|
|
8
14
|
readonly StatePower: 22;
|
|
@@ -11,6 +17,8 @@ export declare const MessageType: {
|
|
|
11
17
|
readonly StateLabel: 25;
|
|
12
18
|
readonly GetVersion: 32;
|
|
13
19
|
readonly StateVersion: 33;
|
|
20
|
+
readonly GetInfo: 34;
|
|
21
|
+
readonly StateInfo: 35;
|
|
14
22
|
readonly GetLocation: 48;
|
|
15
23
|
readonly SetLocation: 49;
|
|
16
24
|
readonly StateLocation: 50;
|
|
@@ -54,6 +62,11 @@ export interface DeviceState {
|
|
|
54
62
|
location: GroupInfo;
|
|
55
63
|
vendor: number;
|
|
56
64
|
product: number;
|
|
65
|
+
firmwareVersion?: number;
|
|
66
|
+
signal?: number;
|
|
67
|
+
rssi?: number;
|
|
68
|
+
uptime?: number;
|
|
69
|
+
downtime?: number;
|
|
57
70
|
}
|
|
58
71
|
/** LIFX port */
|
|
59
72
|
export declare const LIFX_PORT = 56700;
|
package/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,yBAAyB;AACzB,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,yBAAyB;AACzB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bd,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAE5E,2BAA2B;AAC3B,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,CAAE,gCAAgC;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,wBAAwB;AACxB,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACvC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC,CAAE,0BAA0B;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC,CAAE,gBAAgB;CACvC;AAED,+BAA+B;AAC/B,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gBAAgB;AAChB,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,kBAAkB;AAClB,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAyD3C,CAAC"}
|
package/types.js
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
export const MessageType = {
|
|
3
3
|
GetService: 2,
|
|
4
4
|
StateService: 3,
|
|
5
|
+
GetHostInfo: 12,
|
|
6
|
+
StateHostInfo: 13,
|
|
7
|
+
GetHostFirmware: 14,
|
|
8
|
+
StateHostFirmware: 15,
|
|
9
|
+
GetWifiInfo: 16,
|
|
10
|
+
StateWifiInfo: 17,
|
|
5
11
|
GetPower: 20,
|
|
6
12
|
SetPower: 21,
|
|
7
13
|
StatePower: 22,
|
|
@@ -10,6 +16,8 @@ export const MessageType = {
|
|
|
10
16
|
StateLabel: 25,
|
|
11
17
|
GetVersion: 32,
|
|
12
18
|
StateVersion: 33,
|
|
19
|
+
GetInfo: 34,
|
|
20
|
+
StateInfo: 35,
|
|
13
21
|
GetLocation: 48,
|
|
14
22
|
SetLocation: 49,
|
|
15
23
|
StateLocation: 50,
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAEA,yBAAyB;AACzB,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,EAAE;IACjB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,GAAG,EAAE,GAAG,EAAG,eAAe;IAC1B,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,GAAG,EAAG,iBAAiB;CACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
|