npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

homebridge-tuya-powerstrip

v1.0.10

Published

Tuya powerstrip control for homebridge. Based on codetheweb's Tuya API and tuya outlet plugins.

Downloads

25

Readme

Tuya Powerstrip Support for Homebridge

Example config.json for power strip with 4 outlets and USB:

"accessories": [

    {
        "accessory": "TuyaPowerStrip",
        "name": "Rooster Shrine",
        "description" : "Tuya Power Strip Outlet 1",
        "ip": "192.168.104.8",
        "devId": "0XXXXXXXXXXXXXXXX8",
        "localKey": "2XXXXXXXXXXXXXXX5",
        "apiMinTimeout" : 100,
        "apiMaxTimeout" : 1000,
        "apiRetries": 1,
        "apiDebug" : false,
        "refreshInterval" : 120,
        "debugPrefix" : "~~~!~~~ ",
        "debug" : false,
        "deviceEnabled" : true
    },

    {
        "accessory": "TuyaPowerStrip",
        "name": "Porch Fan",
        "description" : "Tuya Power Strip Outlet 2",
        "ip": "192.168.104.8",
        "devId": "0XXXXXXXXXXXXXXXX8",
        "localKey": "2XXXXXXXXXXXXXXX5",
        "dps" : 2,
        "apiMinTimeout" : 100,
        "apiMaxTimeout" : 1000,
        "apiRetries": 1,
        "apiDebug" : false,
        "refreshInterval" : 120,
        "debugPrefix" : "~~~!~~~ ",
        "debug" : false,
        "deviceEnabled" : true
    },

    {
        "accessory": "TuyaPowerStrip",
        "name": "Porch Fan",
        "description" : "Tuya Power Strip Outlet 3",
        "ip": "192.168.104.8",
        "devId": "0XXXXXXXXXXXXXXXX8",
        "localKey": "2XXXXXXXXXXXXXXX5",
        "dps" : 3,
        "apiMinTimeout" : 100,
        "apiMaxTimeout" : 1000,
        "apiRetries": 1,
        "apiDebug" : false,
        "refreshInterval" : 120,
        "debugPrefix" : "~~~!~~~ ",
        "debug" : false,
        "deviceEnabled" : true
    },

    {
        "accessory": "TuyaPowerStrip",
        "name": "Porch Accent Lights",
        "description" : "Tuya Power Strip Outlet 4",
        "ip": "192.168.104.8",
        "devId": "0XXXXXXXXXXXXXXXX8",
        "localKey": "2XXXXXXXXXXXXXXX5",
        "dps" : 4,
        "apiMinTimeout" : 100,
        "apiMaxTimeout" : 1000,
        "apiRetries": 1,
        "apiDebug" : false,
        "refreshInterval" : 120,
        "debugPrefix" : "~~~!~~~ ",
        "debug" : false,
        "deviceEnabled" : true
    },

    {
        "accessory": "TuyaPowerStrip",
        "name": "Power Strip USB",
        "description" : "Tuya Power Strip USB Ports",
        "ip": "192.168.104.8",
        "devId": "0XXXXXXXXXXXXXXXX8",
        "localKey": "2XXXXXXXXXXXXXXX5",
        "dps" : 5,
        "apiMinTimeout" : 100,
        "apiMaxTimeout" : 1000,
        "apiRetries": 1,
        "apiDebug" : false,
        "refreshInterval" : 120,
        "debugPrefix" : "~~~!~~~ ",
        "debug" : false,
        "deviceEnabled" : true
    },

    {
        "accessory": "TuyaPowerStrip",
        "name": "Power Strip Master Switch",
        "description" : "Tuya Power Strip Master Power Button",
        "ip": "192.168.104.8",
        "devId": "0XXXXXXXXXXXXXXXX8",
        "localKey": "2XXXXXXXXXXXXXXX5",
        "dps" : 6,
        "apiMinTimeout" : 100,
        "apiMaxTimeout" : 1000,
        "apiRetries": 1,
        "apiDebug" : false,
        "refreshInterval" : 120,
        "debugPrefix" : "~~~!~~~ ",
        "debug" : false,
        "deviceEnabled" : true
    }
]

This plugin also works with single power outlets that are Tuya based.

Example config.json for Tuya based single power outlet:

"accessories": [
    {
        "accessory": "TuyaPowerStrip",
        "name": "Power Outlet",
        "description" : "Single Power Outlet",
        "ip": "192.168.104.9",
        "devId": "0XXXXXXXXXXXXXXXX8",
        "localKey": "2XXXXXXXXXXXXXXX5",
        "dps" : 1,
        "apiMinTimeout" : 100,
        "apiMaxTimeout" : 1000,
        "apiRetries": 1,
        "apiDebug" : false,
        "refreshInterval" : 120,
        "debugPrefix" : "~~~!~~~ ",
        "debug" : false,
        "deviceEnabled" : true
    }
]

This was originally derived from the homebridge-tuya-outlet plugin and modified to utilize the 'dps' in the Tuya api for managing multiple devices.

Carefully read and review the procedures to obtain the Tuya api device ID (hint: it has the MAC address in it) and the localKey. It's quite a procedure, but it's easy once learned: Tuya API Sniffing Procedures

This plugin requires a modified version of the tuyapi that I extended found here: homebridge-tuyapi-extended

See tuyapi for original inspiration.

Tested on the following power strip (Non affiliated links following:)

Tested on the following single power outlets:

This plugin should work with any power outlets / power strips that can be added to the Tuya Smart app.

Helpful things to note:

  1. I found it is best to assign a static IP address through DHCP on my router to each device. Add that IP address to the config file in homebridge when setting up your outlets / strips. The power strips will only have a single LAN IP regardless of how may outlets. A single power outlet will also have a single IP. So each unique physical device should have it's own static ip. Even though this is not required in the original tuyapi and homebridge-tuya-outlet, I found that there is a potential hang in homebridge while waiting on the IP address to be obtained. By adding it static, it reduced the wait time and lag when accessing these devices.

  2. At this time, until the homebridge-tuyapi-extended is updated, if you add a device and it is in your config file, but unplugged, this may cause your homebridge to crash or hang. This is being worked out, and a reason for the fork of the original tuyapi.

  3. While using power strips, note that the "dps" values for each outlet, and even the master switch of the power strip are required in the config. You may need to experiment, but you can view the available dps values in the log files when you configure the outlet. If you are using a single outlet, just put "dps" : 1 in your config. Watch the log files and you'll see the other options for each outlet on your strip.

  4. On the Tonbux brand power strip I listed above, my dps values are listed in the config as an example. In my homebridge, I do not add the master switch because it's easy to turn off the entire power strip.