With Smart Plugs, what becomes of Always On


That’s what is happening automatically with this update.

1 Like


Not for me it’s not. I used 3 HS110’s to better understand my Always On. When they were connected, I saw the load for the 3 HS110’s at roughly what I would have expected, but my Always On stayed at the same total it was before resulting in double-recording load for nearly all of my Always On devices.



In my case, 3+ days had elapsed and nothing changed. When combined with the fact that my Other nearly went away to 0 which is clearly invalid so I deactivate the monitoring of the HS110 in Sense. I may re-activate one of them and let it sit to see how it reacts but the results when I put all 3 in were a mess, even after letting some time pass



@frankwin.hooglander keep in mind that this is not a beta forum

@don1 I would expect a major improvement for the smartplug always-on double counting issue very soon. Hint hint.



The biggest issue I have seen, since adding two smart plugs that track Always On loads, is that the device models seem to get confused by the fact that the total measured load at the mains is less than the total of all the devices. By “confused”, I mean that the model correctly detects the device turned on, but seconds later the device bubble vanishes and the load ends up in Other.

Something else to comment on:. When Sense added the first plug, there were 5 or 6 devices active (bubbles showing). Immediately after the bubble formed for the smart plug, all of the other bubbles vanished and Other had all of the remaining load. I presumed this occurred because Always On had too much load allocated to it, so the numbers added up too high and the models got terribly confused. When the second plug was added, no other bubbles could not display very long until the next day when Always On corrected down from 410 watts to 270 watts (which I think is still too high but I am giving it time).



How long have you had these plugs installed? Something strange definitely seems to be happening here. I would suggest submitting a Support ticket about the issues that you’re seeing.



Both plugs were installed on 1/31/19.

I’ll contact Support with a copy of my post above.



Ryan et al-
I am new to the community, but how the “always on” measure is visualized and exported is not very tidy in my opinion. The bubble visualization displays the current output of a given device. Similarly, the grain of the exported data table is at one row per device per unit of time. However, “always on” is not a device. It appears to be a grouper that describes power usage over a period of time (24 hour median?). In its current instance I believe it is device independent, and appears to run at the whole house level.

From a data science perspective, the tidyr implementation would be to apply the always on logic to each device independently over time. You could instantiate this one of two ways. One row per device per unit time with a column for usage for that period of time with a second ‘always on’ column that was specific for that device and the period of time over which the always on calculation is performed (possibly the median of the past 24 hours). Alternatively you could have one row per device per unit time with a usage column with the kWh and a grouper column that displayed the grouper. Either way would allow you to have visualizations that were by device but then toggled to show the always on value per device. Of course this would be more intensive to produce but it would resolve a lot of confusion. Interested in the group’s thoughts.




I think the visualization of Always On for a house in the Bubble display is actually pretty good, but got messier with the addition of smartplugs.

Pre-smartplug, even though Always On was a very different beast from device utilization, it was very useful treating it as a single device-like entity for two reasons:

  • That treatment enabled relative visualization of Always On vs. various identified devices vs. Other.
  • Always On at the house level is also needed to calculate and size the Other bubble.

With the addition of smartplugs things are trickier because Sense can separate On waveforms plus Off, Idle and Always On values for each plug/device(s), but it’s not quite clear how to display. The current device-centric paradigm, shows oversized bubbles for smartplugs that are in Idle/Always states, when perhaps smartplug Always On/Idle power should be rolled into global Always On, and only show smartplug devices as bubbles when they are actively On.

Banish the thought of Always On as a median or mean, as many folks have assumed.

Courtesy of Sense - Always On is now a calculation of:

  • The lowest power of each of your mains, added together, minus the lowest total draw of smart plugs & Hue devices, added together.
  • The lookback period for the “lowest” power is 48 hours.
  • “Lowest”, for the mains, Hue, and smartplugs, actually means the 1% bin of the observed wattage histogram over that 48 hour period.
  • The smart plugs calculation doesn’t take effect until 24 hours have been observed, so the users’ “always on” bubble will not be reduced by the smart plug’s power for that period of time.
  • Always On is updated at 2 Hz rate using the 48-hour rolling, lookback window.

BTW @seth1 , I agree with your thoughts when it comes to Export, but not in Bubble visualization. I also think that Sense will need to consider offering different flavors of more flexible usage reporting someday, maybe similar to capabilities of Quicken or Mint for financial reporting (by categories, by tags, by payee, etc. vs. user selected time ranges and increments).



Thanks for the input, Seth. We’re doing some work to refine the Always On display so I’ll pass your feedback onto the team.

Also curious to hear from others on this…there’s a lot of possibilities here, ranging from incredibly complex (but satisfying to the ultra data junkies), to simple, to flexibly in between.



@RyanAtSense. One thing that I think should be tied to always on is the TpLink devices “IDLE” wattage. I have no preference if it gets lumped into the existing “Always On” , or if a new “Identified Always On” is created. In either case, if it’s always on (read idle) it should be be grouped there. I’m not into cheating myself trying to get low score - I want to do my best to minimize my “vampires”. Just my 2 cents.



so this was also bothering me because i just installed 6 smart plugs to track devices that weren’t being detected but now i don’t know how much always on each device uses BUT i think i have a good idea to sort that out. what if the devices that are on smart plugs looked like a pie chart and had two colors, one color and number for the always on and another color that was showing amount of power over the always on power that is being used? you could even combine the always on and other bubble into one bubble that would show the two together since both Always On and Other bubbles are undetected devices.



I like your idea @dwleckie. Just be aware that there is a difference today in how Always On for a smartplug is computed and how Idle power is devined. Always On power usage can always be computed for a smartplug, but the Sense algorithm won’t always find an Idle power level a smartplug, depending on what the usage pattern looks like. It’s likely, most of the time, that Sense-computed Always On for the smartplug should equal the Idle power, except in cases where the device on a smartplug is active for more than 47 1/2 hours.

1 Like


That is great info on how the ‘always on’ is calculated. Attached is an R script that I wrote to get the tables and visualizations that I am interested in. I am not sure if the math around the sense calculated always on value is correct or not in light of what you posted above but the theme of the analysis I believe is directionally correct.

sense data analysis.R (7.8 KB)



@kevin1. Concur with your information. I’m just hoping that both scenarios- smartplug always on AND smartplug idle can BOTH be included. I have 3 types of situations in my smart plugs. 1) device is truly always on (network, server etc). 2) Devices that are truly shut off for hours a day but have the “residual” plug wattage ( example my washer). And 3) - the worst - Devices that are on 24/7 but turn off but leave pwer supply running (TV sets, echo/sonos devices etc). Having an accurate baseline for true always on would be enhanced using both. If it happens - Great, if it doesn’t, I’m still way ahead of the game with what is already provided - Zero complaints from me. I bought Sense only to monitor my overall consumption and solar production and was very happy with purchase price for that alone! All the other bells and whistles are just unexpected Christmas presents!



Hi Seth,

I would love to check out the Always On math as well, but unless I start playing more with the informal API (I’ve done a few experiments), I really can’t duplicate their calculations that are done with 1/2 second data resolution. Even polling at 1/2 second via the API, it’s not guaranteed I would get the the exact same data stream.

Thanks for sharing your R script and plots… I just started playing with your R with my 2018 and 2019 data rbinded together. I haven’t used tidyr before and have hit an issue with the first “spread” function (Duplicate identifiers for rows (89930, 89945), (5, 115722), …). Guessing that that one is related to Sense including Jan 1, 2019 00:00:00 data in the 2018 and 2019 exports. Will let you know.

One other thing your may also want to include in your scripts is a data completeness check. Something like the code below. I occasionally find missing hours either due to my network issues or occasionally due to data dropouts on the Sense end…

# Find missing hours and add to list as 0kWh
check <- seq(from=as.POSIXct(AlwaysOn$DateTime[1]), by="hour", to=as.POSIXct(AlwaysOn$DateTime[nrow(AlwaysOn)]))
MissingSenseHours <- as.data.frame(check[!check %in% as.POSIXct(AlwaysOn$DateTime)])
MissingSenseHours$kWh <- 0
colnames(MissingSenseHours)[1] <- 'DateTime'
SenseHours <- rbind(SenseHours, MissingSenseHours)


I found a variety of issues causing problems for “spread”:

  • Duplicated midnight data for Jan 1 in both 2018 and 2019 exports (18 duplicates)
  • Extra 1AM data on Nov 4, the changeover between standard time and daylight savings time. Sense can’t easily distinguish since they don’t include timezone. One set of data is actually for 1AM PST for me, and one set is for 1AM PDT.
  • I had two garbage disposals both named “Disposal” in Sense, though they were in separate locations. Have since renamed.

Still chasing down 3 remaining errors.



Good pick up about the missing hours and a completeness check. Missing zero values are key for min and median stats. I re-did the loop logic to include all of the hours in a given data extract and specified some time zones in the import. Code is still sloppy and a little slow, but functional. See below. For my purposes, the by device 24hr minimum is a good way to approximate the “always on” associated with a given device or smart plug. On a side note, a great reference for data manipulation in R using tidyverse packages is R for data science. I have only had sense for two weeks so I will likely refine things as I accumulate data and desire a more efficient script.


sense data analysis v2.R (9.2 KB)

1 Like


Thanks for the update and guidance on the tidyerse reference. I should spend a little time learning the full tidyverse. Up until now, I have been using reshape and reshape2 to for the things you are doing with tidyr. Using reshape has hidden some of the data issues I’m seeing with your script, because cast requires an aggregation function (in my case, mostly sum) which hides partial column duplicates.

I have 3 pairs of rogue data points where a device has the same name and datetime, but different kWh. Turns out that they are really unique devices if you look at the ID, but not unique via name. I suspect these were injected by Sense. Have removed each by index using subsetting and am now waiting for the first ggplot to be composed. I’m using about 14 months of data for 60 or so identified devices so it’s taking a while. Probably won’t be a useful plot, but a good stress test :slight_smile:



Always on is currently completely useless for me. My always on used to be around 150-185W pre-smart plugs. Post Smart Plugs it has never been below 165W even though almost all my “always on” devices are now behind a smart plug. The only “always on” devices that are currently not behind a smart plug in my house are:

  • 2 x Google Home Hub - 3W each in “idle” mode
  • 1 x Google Home - 3 W in idle mode
  • 9 x Google Home Mini - 2 W each in idle mode
  • 1 x Alexa - 2 W in idle mode
  • Microwave display - < 1W
  • Doorbell - < 1W
  • 1 x Alarm Clock - 2W in idle mode.
  • 36 Smart LED light bulbs - < 0.2W each in idle mode.
    (I measured all my smart home speakers & everything else with a plug w/ a Kill-a-Watt meter, the rest is info retrieved from datasheets, etc.)

That’s it. Everything else is on a smart plug. There’s no way those devices come even close to the 185-220W Sense says my always on has been hovering between. I come to < 50W if I add all these above up. That’s a huge discrepancy from the 185-220W that Sense says my house is using.