node-red-contrib-tplink
node-red-contrib-tplink copied to clipboard
A collection of Node-RED nodes for TP-Link Smart Home devices
node-red-contrib-tplink
TP-Link Smart Home Node-Red Nodes
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.
Installation
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.
Parameters
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: 192.168.1.101
or 192.168.1.101/3
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.
Inputs
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.
Controls
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
-
Commands
string
-
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.
Events
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']
or
{ 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.