Hi everyone - I’ve written a Python tool/program that allows you to emulate (multiple) TP-Link HS110 plugs, and define power usage data to send to Sense via these emulated plugs. You can find it here:
You can define two types of plugs:
- Static: These have a constant reported power
- Dynamic: These types report a power based on some other parameter, through integrations
Edit: Some quick examples:
- You have an always-on porch light, that you know consumes 60W constantly, and just disappears into your Other usage. You can define a 60W “static” virtual plug to define that usage for Sense, and have it show up in your device list.
- You have a smart dimmer light switch driving 6x 14w dumb LED bulbs, connected to Home Assistant. Using a “dynamic” plug you can map the brightness % value to power usage, and get that data into Sense
Check out the example configuration file for an idea of how the setup works.
At the moment the only integration is with Home Assistant via the Websockets API, but expanding to other IoT/SmartHome systems should be straightforward. I’m planning to implement HTTP GET/POST and MQTT methods soon. I’m also interested in using SenseLink to get “live” data from other energy-monitoring smart plugs into Sense.
I was driven to develop this because I’ve got a few Lutron Caseta dimmer switches that run a lot of scenes/automations - always going to different dim levels, at different times. I wasn’t sure if those would be reliably detected, and I wanted to find a way to get the data into Sense. Plus the challenge to develop it!
SenseLink builds on the work done to decipher the TP-Link protocol. It properly formats and encodes a response like a TP-Link HS110 plug, and reports that back to your Sense monitor when it sends out a broadcast request for plug data. Whatever device you have running this needs to be able to receive the UDP broadcasts from your Sense monitor, so it likely needs to be on the same subnet.
I’ve generated a few Docker images for both x86 and ARM, and have tested it on a RaspberryPi myself.
Hopefully the community finds this useful! I’m certainly open to suggestions/ideas/pull requests to improve it further.
But remember this is an unofficial tool, and Sense is not responsible for anything that happens as a result of using it, nor can they provide any support.