@jstark/tplink-smarthome-api
    Preparing search index...

    @jstark/tplink-smarthome-api

    @jstark/tplink-smarthome-api

    NPM Version Build Status

    TP-Link Smarthome API — a maintained, lodash-free fork of plasticrake/tplink-smarthome-api. Requires Node.js 22+.

    Changelog

    npm install @jstark/tplink-smarthome-api
    
    Model Type
    HS100, HS103, HS105, HS107, HS110,
    HS200, HS210, HS220, HS300, KP303, KP400
    ES20M, EP40, ...etc.
    Plug
    LB100, LB110, LB120, LB130, LB200, LB230, KL50, KL120, KL125
    ...etc.
    Bulb
    KL430
    ...etc.
    Bulb (light strip)

    Many other TP-Link Plug and Bulb models may work as well. Note that Tapo devices are not supported.

    See more examples.

    const { Client } = require('@jstark/tplink-smarthome-api');

    const client = new Client();
    const plug = client.getDevice({ host: '10.0.1.2' }).then((device) => {
    device.getSysInfo().then(console.log);
    device.setPowerState(true);
    });

    // Look for devices, log to console, and turn them on
    client.startDiscovery().on('device-new', (device) => {
    device.getSysInfo().then(console.log);
    device.setPowerState(true);
    });

    Install the command line utility with npm install -g @jstark/tplink-smarthome-api. Run tplink-smarthome-api --help for help.

    API docs can be found here.

    For functions that send commands, the last argument is SendOptions where you can set the transport ('tcp','udp') and timeout, etc.

    Functions that take more than 3 arguments are passed a single options object as the first argument (and if its a network command, SendOptions as the second.)

    Thanks to George Georgovassilis and Thomas Baust for figuring out the HS1XX encryption.

    Some design cues for Client based on node-lifx