This will let you use kasa-cloud to hit your TPLink bulbs in nodejs.
If you'd like to hit them directly, on your local network, use tplink-lightbulb. This library is for situations where you want to use a username/password (from tplink cloud.) It will allow you to acces them remotely.
npm i kasa_control
const KasaControl = require('kasa_control')
const kasa = new KasaControl()
const main = async () => {
await kasa.login('email', 'password')
const devices = await kasa.getDevices()
// turn off first device
await kasa.power(devices[0].deviceId, false)
}
main()
Send a message to a lightbulb (for RAW JS message objects)
Returns: Promise - Resolves with answer
Param | Type | Description |
---|---|---|
deviceId | string | The deviceId of the device in your kasa app |
msg | Object | Message to send to bulb |
Example
kasa.send('80126E22B048C76F341BEED1A3EA8E77177F3484', {
'smartlife.iot.smartbulb.lightingservice': {
'transition_light_state': {
'on_off': 1,
'transition_period': 0
}
})
.then(response => {
console.log(response)
})
.catch(e => console.error(e))
Get a list of devices for your Kasa account
Returns: Promise - Resolves to an array of device-objects Example
kasa.getDevices()
.then(devices => {
console.log(devices)
})
.catch(e => console.error(e))
Get info about a device
Returns: Promise - Resolves to an info-pbject about your device example
kasa.info('80126E22B048C76F341BEED1A3EA8E77177F3484')
.then(info => {
console.log(info)
})
.catch(e => console.error(e))
Param | Type | Description |
---|---|---|
deviceId | string | The deviceId of the device in your kasa app |
Set power-state of lightbulb
Returns: Promise - Resolves to output of command
Param | Type | Description |
---|---|---|
deviceId | string | The deviceId of the device in your kasa app |
powerState | Boolean | On or off |
transition | Number | Transition to new state in this time |
options | Object | Object containing mode , hue , saturation , color_temp , brightness
|
Example
// turn a light on
kasa.power('80126E22B048C76F341BEED1A3EA8E77177F3484', true)
.then(status => {
console.log(status)
})
.catch(err => console.error(err))
Thanks to itnerd for these 3 articles: