Idea for plugin Etekcity Wifi PlugControl

Hey guys! I want to be able to toggle my Ender 3 power using the Etekcity Voltson smart wifi plug (ESW01-USA). So my plugin pitch is a plug that's similar to some of the ones out there already with one major difference: support for Etekcity plugs. If it helps, I did find a possible api that can be used for the plugs: https://pypi.org/project/pyvesync

As you have noted, there are existing plugins that have been written to work with other brands of plugs. The authors of these plugins undoubtedly had the hardware their plugin supports available to them as they developed the plugin.

As I see it, you have two options. The source code for these plugins is available and since you have the hardware, you could modify an existing plugin to use the API you mentioned and test it using your hardware. The second option is an offer to send the hardware to someone who is willing to do the modifications and testing for you.

Yeah, wouldn't be too difficult I don't think to integrate into the framework of any of my power plugins if I had a device to develop with and a little money for the effort.

1 Like

It would be nice to keep this to one thread rather than two. I've moved the other posts onto this one.

Hey guys! I'm wondering if there is a plugin that at least can control the Etekcity Smart plugs. I got these plugs a long time ago and just happened to come across them again today since I wanted to add the ability to turn on and off my printer via Octoprint

Here's a JavaScript module for Node which allows you to control one. Pulling apart the client.js file, it looks like it's forwarding requests to https://server1.vesync.com:4007 plus variables username, password and deviceName. Presumably it builds a GET or POST message, sends that to the cloud and does the work that way. They probably have you create an account on their site, generate a developer token and then this would appear in the code during the login event.

  • /devRequest appears to be the endpoint for toggling power

And this closed issue on their repository includes some Python code to throw those commands.

Yeah, it looks like the python library also communicates with their cloud servers with a login, which is still possible to create a plugin for just means extra work/time to develop. That is one of the reasons I really like the tasmota, tplink, and wemo devices; you can send commands directly to the device(s) and not have to deal with a middle-man cloud server.

What I don't like about products like this is that presumably they must poll the cloud in order to get work to be performed (or they've got you opening up your firewall) or they keep a persistent connection at all times to the Internet. I don't love that model. Like you said, I like the peer-to-peer approach.

2 Likes

I think the plug requires having to talk through the app, at least from what I experienced with my Google Assistant, I had to pair my account that had the plug to my Google Assistant to get it working.

I'm not convinced of that. My TP-Link products can be controlled through the KASA app, the Alexa app or directly by my own apps. I provided a link above which looks like Python code which can talk to their cloud-based API to toggle the Etekcity devices; the app isn't involved.

1 Like

If it's necessary, I can send over the plug since I'm not currently using it. I never played around with Python before <_>

Also sorry for the late reply! I've been busy trying to pack up my stuff to move in my campus dorms

Im going to try my hand at making the plugin! Wish me luck :slight_smile:

2 Likes

Oh! I did a little more digging online and discovered that it is possible to flash Tasmota to the plugs! I'll give this flashing a shot whenever I get the chance :smiley:

2 Likes

I am currently developing a plugin called VeSync Power Monitor that will allow you to monitor the power usage of your 3D printer. I definitely want to grow it beyond that as well, to support turning switches on and off.

I am just waiting on an update to a pip library for pyvesync and then I intend to submit it to the plugin repository

3 Likes