node-red-contrib-tplink 1.0.1

A collection of Node-RED nodes for TP-Link smart-home devices.

npm install node-red-contrib-tplink

TP-Link Smart Home Node-Red Nodes

GitHub release NPM Version GitHub last commit

Node version GitHub repo size in bytes

Github All Releases

npm GitHub contributors contributions welcome

This is a Node-RED node that allows you to control smart plugs, switches, and bulbs from the TP-Link Kasa Smart ecosystem.

Under the hood, this uses TP-Link Smart Home API.


Run the following command in the root directory of your Node-RED install

$ npm install node-red-contrib-tplink

or you can use the Palette Manager in Node-RED.


Name - Type in the name of the host manually or keep the default device name

Device IP - Type in the Device IP address manually or press the button to retrieve all locally available plug devices. To specify a plug in a multi-plug device, append a / followed by the plug number (zero-indexed). Use is optional. Alternatively, or additionally, an input message can include msg.topic with a device IP (and optional plug number). Examples: or

Connection poll interval - Interval that is used to poll availability of devices (>500ms / Recommended 5000-10000ms). Set to 0 to disable availability checks (in which case, OnlineEvents will not trigger, even if started).

Event poll interval - Interval that is used to poll active devices for events (>500ms / Recommended 1000-3000ms). Set to 0 to disable event polling (in which case, all events except OnlineEvents will not trigger, even if started).

Output payload - Types are info, none, string, number, boolean, JSON, and timestamp. Default type is info with a value of getInfo. If set to info, the selected payload command will be fired after completion, and the payload set accordingly. Output payload is ignored if the node input is a command or an event, in which case see below for more information

Debug - If enabled, will output device information to the flow editor debug tab.


Send in a message to control, command, or start/stop events.

  • topic - Optional. The device IP (and optional plug). Any message without a topic will use the device configured via the parameters. If no topic is included, and no device is configured, the message will be ignored.

  • payload - Required. Either a control, command, or event action. See below for details of each.


Control a device by setting its properties.

string | Object

  • true | on - Turn on the device
  • false | off - Turn off the device
  • toggle - Switch the power state of the device.
  • Or as an object, all properties optional:
    • state: true | on | false | off - Set device on or off
    • brightness: [1-100] - Set brightness, if supported
    • temperature: [2700-6500, 0] - Set brightness (in kelvin), or zero to leave temperature mode and return to previous hsb value if supported
    • hsb: {hue, saturation, brightness} - Set the color, if supported
    • led: true | false - Turn the LED on or off, if supported



  • getInfo - Fetch the device information.
  • getCloudInfo - Fetch the device information from the cloud.
  • getQuickInfo - Fetch most popular proprieties, such as username, device consumption, mode, lighting state, and many more. Supports multi-plug.
  • getMeterInfo - Fetch the current device consumption. Supports multi-plug.
  • eraseStats - Clear all the meter statistics. Supports multi-plug.


string | array | Object

  • startMeterEvents/stopMeterEvents - Subscribe to meter information events. Event emits on event polling interval.
  • startInfoEvents/stopInfoEvents - Subscribe to information events. Event emits on event polling interval.
  • startPowerEvents/stopPowerEvents - Subscribe to power on/off events. Event emits on device/plug change.
  • startPowerUpdateEvents/stopPowerUpdateEvents - Subscribe to power on/off events. Event emits on event polling interval.
  • startInUseEvents/stopInUseEvents - Subscribe to device usage events. Event emits on device/plug change.
  • startInUseUpdateEvents/stopInUseUpdateEvents - Subscribe to device usage events. Event emits on event polling interval.
  • startOnlineEvents/stopOnlineEvents - Subscribe to online/offline events. Event emits on poll interval.
  • stopAllEvents - Unsubscribe all events.

Multiple event actions can be sent at once, either as an array or as a string separated by "|". Alternatively, an array or string can be sent in the events property of an object. Examples:

['startMeterEvents', 'stopPowerEvents']


{ events: 'startMeterEvents|stopPowerEvents' }

For developers

This repo. is (mainly) coded on Node 10.3.0 with Node-RED 0.18.7 on Windows 10 Home Build 17134.81.

Runs succesfully in a Raspberry Pi 3 Model B+ on standard Raspbian Stretch's Node 0.10.29 and matching Node-RED.

Node Info

Version: 1.0.1
Updated 1 year, 7 months ago
License: MIT
Rating: 5.0 6




57 in the last week


  • kasa


  • node-red
  • tplink
  • tp-link
  • kasa
  • iot
  • hs100
  • hs105
  • hs107
  • hs110
  • hs200
  • hs220
  • hs300
  • kp303
  • kp400
  • lb100
  • lb110
  • lb120
  • lb130
  • lb200
  • lb230
  • home
  • smart
  • smartplug
  • smartswitch
  • smartbulb



  • Barney Rubble
  • Raj Amal
  • juggledad
  • Casey Holzer
  • hufftheweevil