@bobfrankston/lxlan 0.1.0
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/.claude/settings.local.json +13 -0
- package/client.d.ts +65 -0
- package/client.d.ts.map +1 -0
- package/client.js +176 -0
- package/client.js.map +1 -0
- package/client.ts +214 -0
- package/device.d.ts +75 -0
- package/device.d.ts.map +1 -0
- package/device.js +149 -0
- package/device.js.map +1 -0
- package/device.ts +170 -0
- package/index.d.ts +5 -0
- package/index.d.ts.map +1 -0
- package/index.js +5 -0
- package/index.js.map +1 -0
- package/index.ts +4 -0
- package/notes.md +530 -0
- package/package.json +31 -0
- package/protocol.d.ts +56 -0
- package/protocol.d.ts.map +1 -0
- package/protocol.js +174 -0
- package/protocol.js.map +1 -0
- package/protocol.ts +209 -0
- package/tsconfig.json +20 -0
- package/types.d.ts +64 -0
- package/types.d.ts.map +1 -0
- package/types.js +86 -0
- package/types.js.map +1 -0
- package/types.ts +129 -0
package/types.ts
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { HSBK } from '@bobfrankston/colorlib';
|
|
2
|
+
|
|
3
|
+
/** LIFX message types */
|
|
4
|
+
export const MessageType = {
|
|
5
|
+
GetService: 2,
|
|
6
|
+
StateService: 3,
|
|
7
|
+
GetPower: 20,
|
|
8
|
+
SetPower: 21,
|
|
9
|
+
StatePower: 22,
|
|
10
|
+
GetLabel: 23,
|
|
11
|
+
SetLabel: 24,
|
|
12
|
+
StateLabel: 25,
|
|
13
|
+
GetVersion: 32,
|
|
14
|
+
StateVersion: 33,
|
|
15
|
+
GetLocation: 48,
|
|
16
|
+
SetLocation: 49,
|
|
17
|
+
StateLocation: 50,
|
|
18
|
+
GetGroup: 51,
|
|
19
|
+
SetGroup: 52,
|
|
20
|
+
StateGroup: 53,
|
|
21
|
+
Get: 101, /** GetColor */
|
|
22
|
+
SetColor: 102,
|
|
23
|
+
State: 107, /** LightState */
|
|
24
|
+
} as const;
|
|
25
|
+
|
|
26
|
+
export type MessageTypeValue = typeof MessageType[keyof typeof MessageType];
|
|
27
|
+
|
|
28
|
+
/** LIFX protocol header */
|
|
29
|
+
export interface LxHeader {
|
|
30
|
+
size: number;
|
|
31
|
+
protocol: number;
|
|
32
|
+
addressable: boolean;
|
|
33
|
+
tagged: boolean;
|
|
34
|
+
source: number;
|
|
35
|
+
target: string; /** MAC address as hex string */
|
|
36
|
+
resRequired: boolean;
|
|
37
|
+
ackRequired: boolean;
|
|
38
|
+
sequence: number;
|
|
39
|
+
type: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Full LIFX message */
|
|
43
|
+
export interface LxMessage extends LxHeader {
|
|
44
|
+
payload: Buffer;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Group/Location info */
|
|
48
|
+
export interface GroupInfo {
|
|
49
|
+
id: string; /** 16-byte GUID as hex */
|
|
50
|
+
label: string;
|
|
51
|
+
updatedAt: number; /** timestamp */
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Device state for caching */
|
|
55
|
+
export interface DeviceState {
|
|
56
|
+
power: boolean;
|
|
57
|
+
color: HSBK;
|
|
58
|
+
label: string;
|
|
59
|
+
group: GroupInfo;
|
|
60
|
+
location: GroupInfo;
|
|
61
|
+
vendor: number;
|
|
62
|
+
product: number;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** LIFX port */
|
|
66
|
+
export const LIFX_PORT = 56700;
|
|
67
|
+
|
|
68
|
+
/** Header size */
|
|
69
|
+
export const HEADER_SIZE = 36;
|
|
70
|
+
|
|
71
|
+
/** Product info - common LIFX products */
|
|
72
|
+
export const Products: Record<number, string> = {
|
|
73
|
+
1: 'LIFX Original 1000',
|
|
74
|
+
3: 'LIFX Color 650',
|
|
75
|
+
10: 'LIFX White 800 (Low Voltage)',
|
|
76
|
+
11: 'LIFX White 800 (High Voltage)',
|
|
77
|
+
18: 'LIFX White 900 BR30 (Low Voltage)',
|
|
78
|
+
20: 'LIFX Color 1000 BR30',
|
|
79
|
+
22: 'LIFX Color 1000',
|
|
80
|
+
27: 'LIFX A19',
|
|
81
|
+
28: 'LIFX BR30',
|
|
82
|
+
29: 'LIFX A19 Night Vision',
|
|
83
|
+
30: 'LIFX BR30 Night Vision',
|
|
84
|
+
31: 'LIFX Z',
|
|
85
|
+
32: 'LIFX Z 2',
|
|
86
|
+
36: 'LIFX Downlight',
|
|
87
|
+
37: 'LIFX Downlight',
|
|
88
|
+
38: 'LIFX Beam',
|
|
89
|
+
43: 'LIFX A19',
|
|
90
|
+
44: 'LIFX BR30',
|
|
91
|
+
45: 'LIFX A19 Night Vision',
|
|
92
|
+
46: 'LIFX BR30 Night Vision',
|
|
93
|
+
49: 'LIFX Mini',
|
|
94
|
+
50: 'LIFX Mini Day and Dusk',
|
|
95
|
+
51: 'LIFX Mini White',
|
|
96
|
+
52: 'LIFX GU10',
|
|
97
|
+
55: 'LIFX Tile',
|
|
98
|
+
57: 'LIFX Candle',
|
|
99
|
+
59: 'LIFX Mini Color',
|
|
100
|
+
60: 'LIFX Mini Day and Dusk',
|
|
101
|
+
61: 'LIFX Mini White',
|
|
102
|
+
62: 'LIFX A19',
|
|
103
|
+
63: 'LIFX BR30',
|
|
104
|
+
64: 'LIFX A19 Night Vision',
|
|
105
|
+
65: 'LIFX BR30 Night Vision',
|
|
106
|
+
66: 'LIFX Mini Color',
|
|
107
|
+
68: 'LIFX Candle',
|
|
108
|
+
81: 'LIFX Candle White to Warm',
|
|
109
|
+
82: 'LIFX Filament Clear',
|
|
110
|
+
85: 'LIFX Filament Amber',
|
|
111
|
+
87: 'LIFX Mini White',
|
|
112
|
+
88: 'LIFX Mini White',
|
|
113
|
+
89: 'LIFX Switch',
|
|
114
|
+
90: 'LIFX Clean',
|
|
115
|
+
91: 'LIFX Color',
|
|
116
|
+
92: 'LIFX Color',
|
|
117
|
+
93: 'LIFX A19 US',
|
|
118
|
+
94: 'LIFX BR30',
|
|
119
|
+
96: 'LIFX Candle White to Warm',
|
|
120
|
+
97: 'LIFX A19',
|
|
121
|
+
98: 'LIFX BR30',
|
|
122
|
+
99: 'LIFX Clean',
|
|
123
|
+
100: 'LIFX Filament Clear',
|
|
124
|
+
101: 'LIFX Filament Amber',
|
|
125
|
+
109: 'LIFX A19 Night Vision',
|
|
126
|
+
110: 'LIFX BR30 Night Vision',
|
|
127
|
+
111: 'LIFX A19 Night Vision Intl',
|
|
128
|
+
112: 'LIFX BR30 Night Vision Intl',
|
|
129
|
+
};
|