Licence
MIT
Version
0.1.6
Deps
2
Size
10 kB
Vulns
0
Weekly
0
@bobfrankston/devdefs
Shared base class and MAC utilities for LAN device protocol libraries.
DeviceBase
Common state and transport plumbing for LAN-controlled smart devices. Subclasses add protocol-specific commands.
| Property | Type | Description |
|---|---|---|
mac |
string |
MAC address (lowercase, colon-separated aa:bb:cc:dd:ee:ff) |
ip |
string |
Current IP address |
port |
number |
UDP port (set by subclass) |
power |
boolean |
On/off state |
label |
string |
User-assigned name |
online |
boolean |
Whether device is responding |
lastSeen |
number |
Timestamp of last message (Date.now()) |
rssi |
number |
WiFi signal strength (dBm) |
fwVersion |
string |
Firmware version (getter/setter — LxDevice decodes from numeric) |
static MaxBrightness |
100 |
Shared brightness scale |
| Getter | Type | Description |
|---|---|---|
brightness |
number |
Brightness 0-100 (subclass reads protocol-specific field) |
| Method | Description |
|---|---|
setPower(on) |
Set power on/off |
setBrightness(level) |
Set brightness 0-100 |
setWhite(temp, brightness?) |
Set white color temperature |
requestState() |
Request current state (async — response via events) |
setTransport(transport) |
Attach a UdpTransport |
markSeen() |
Set lastSeen = Date.now(), online = true |
requireTransport() |
Throw if no transport (protected, for subclass send paths) |
requireIP() |
Throw if no IP (protected, for subclass send paths) |
Constructor normalizes MAC from any format (colons, dashes, bare, upper/lower) to lowercase colon-separated.
MAC Utilities
import { mac12, macmac } from '@bobfrankston/devdefs';
mac12('AA:BB:CC:DD:EE:FF'); // → 'aabbccddeeff'
mac12('aa-bb-cc-dd-ee-ff'); // → 'aabbccddeeff'
mac12('aabbccddeeff'); // → 'aabbccddeeff'
macmac('aabbccddeeff'); // → 'AA:BB:CC:DD:EE:FF'
macmac('aabbccddeeff', '-'); // → 'AA-BB-CC-DD-EE-FF'
Usage
DeviceBase is abstract — subclasses must implement brightness, setPower, setBrightness, setWhite, and requestState.
import { DeviceBase, mac12 } from '@bobfrankston/devdefs';
class MyDevice extends DeviceBase {
dimming: number = 0;
constructor(mac: string, ip?: string) {
super(mac, ip, 12345);
}
get brightness() { return this.dimming; }
setPower(on: boolean) { /* protocol send */ }
setBrightness(level: number) { /* protocol send */ }
setWhite(temp: number, brightness?: number) { /* protocol send */ }
requestState() { /* protocol send */ }
}
Packages using devdefs
- @bobfrankston/wzlan — Wiz LAN protocol
- @bobfrankston/lxlan — LIFX LAN protocol