New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@bobfrankston/devdefs

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bobfrankston/devdefs

Shared base class for LAN device libraries (Wiz, LIFX, etc.)

latest
Source
npmnpm
Version
0.1.6
Version published
Maintainers
1
Created
Source

@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.

PropertyTypeDescription
macstringMAC address (lowercase, colon-separated aa:bb:cc:dd:ee:ff)
ipstringCurrent IP address
portnumberUDP port (set by subclass)
powerbooleanOn/off state
labelstringUser-assigned name
onlinebooleanWhether device is responding
lastSeennumberTimestamp of last message (Date.now())
rssinumberWiFi signal strength (dBm)
fwVersionstringFirmware version (getter/setter — LxDevice decodes from numeric)
static MaxBrightness100Shared brightness scale
GetterTypeDescription
brightnessnumberBrightness 0-100 (subclass reads protocol-specific field)
MethodDescription
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

Keywords

smart-home

FAQs

Package last updated on 19 Jul 2026

Related posts