[PROJECT] Neurio/PWRView Home Energy Monitor Driver


This is not a new driver by any means but I realized I never created a separate project area for it (I kept posting in the original request thread). This is a fairly simple driver the monitors a Neurio (now PWRView after their purchase by Generac) home energy monitor. This system uses a couple clamps to determine the power usage in your breaker box or subpanel and connects to your WiFi to return the data. The device itself has no control capabilities as it was designed purely for monitoring.


  • Polls data from the Neurio (PWRView) home energy monitor
  • Populates energy and power attributes that are standard for Hubitat
  • Populates a number of custom attributes for the various sub-metering and other data the monitor can provide
  • Checks my website daily for an updated version of the driver (if any)


  1. Using driver link above download the driver as a user driver or import it into the window
  2. Save driver
  3. Add a Virtual Device device
  4. Select the Neurio driver for the Device Type
  5. Enter the IP, Username, and Password in the Preferences section (plus any other settings desired) and Save Preferences

Seems to be working. How do we reformat the date to take less space and be in local time to the minute?

Is there a way to change font on the tile, and if so, can be be changed differently for different lines of text?

Here is the string which is getting me the right numbers I'm looking to display
Solar Gen: ${Channel4Power}
Load: ${Channel5Power }
Poll: ${timestamp}

The timestamp is provided by the Neurio so I would be hesitant to manipulate that too much. But I could probably add another attribute "Data As Of" with a more concise one.

As for fonts and stuff. I think you could do that using standard HTML commands as it is formatted HTML. So you could use whatever size or type methods that HTML allows for. Bold, italics, extra lines. All that works. I use bold and extra lines but I have not personally changed the font type or size for my tiles. I can give it a check tonight when I am home if you are still trying.

I tried a simple html adjustment
Solar Gen: ${Channel4Power}
Load: ${Channel5Power }

<font size="-2" color="#00ff00"/font></p
Poll: ${timestamp}


If we could utilize the Hubitat local time of the event processed, that would be good enough for me to the minute; and need not be the GMT time and precision of whatever the Neurio sends as its timestamp. That ought to be easier.

To this I want to add the net excess power to grid value which is equal to the Solar Gen (where it is measured here) and Load (where I have that being measured). Right now, the driver code comes back with power and energy (under the standard tile) as the same value which must be an error. And now, that number is a negative value when there is solar excess into the grid. When there is more load than the solar can cover, that would be a positive number and that is also the case with no solar when its dark, etc.

If I could edit the text of the attribute tile from power or energy to something else, I could use that very simply but I don't know how that could get edited.

Or I combine all the data I wish to display and name it the way needed in the html tile approach, or perhaps 2 of those if one does not have enough space to display it.

Another thing, on the built in attribute of the "normal" tile, is there way to edit the number format, ie round the units, or truncate them versus what I get from t he Aeotec driver and tile, is like 3 or 4 digits after the decimal which is kinda useless and takes a lot of space. Does this have to get done in the groovy code of the driver or where?

Here is how it looks now. Your are helping me learn how the coding works. Is there a primer for groovy?


  • Excellent news on the HTML formatting there, looks decent.
  • I have an update I am going to post right after this that adds in "DataAsOf" which has the month/day/year hours:minutes, although hours are in 24 hour format if that is OK (no need to deal with AM/PM then).
  • Adding values together is easy to do in groovy but not easy to do (that I know of) in the html tile. There is a lot of variability in how people use those values which is why I never summed them up or such. You could add them in a Rule maybe and then set it as a global variable to use, without having to edit the groovy (and remember to re-edit it if you take any further updates).
  • Rounding needs to be done in the driver from what I can find, I do not think there is any way to do it with the html tile. It is pretty easy... you go to the value and run the round function. For example, if I have:
ProcessEvent( "Channel6Voltage", Json.channels[ 5 ].v_V, "V" )

You could change it to:

ProcessEvent( "Channel6Voltage", ( Math.round( Json.channels[ 5 ].v_V * 10 ) / 10 ), "V" )

That would take the Channel6Voltage (say, 117.800) multiply it by 10 so it is 1178.00, then it rounds it to the whole number so it becomes 1178, then divides it by 10 to get the decimal back in place for a final value of 117.8.
I can change that in the code but I have not gotten all that much feedback on this driver (versus others) so I am not sure what level of rounding would be best. Since I really do not use it that often and when I have thought of how I would it is always within Rules (which do not care how many digits) I have not worried too much about it.

  • For a groovy primer, I have just Googled what I needed in almost every case and usually I found something related. That said I have generally ended up at the following two places for most answers:
  • I have a 1st generation Aeotec HEM myself... when it is working it seems to work OK but it is a very chatty device so when it (invariably) drops off for whatever reason I have rarely bothered to put it back on (it was secondary to the Neurio for me anyways).

Updated Version(s):

  • Neurio.groovy = 0.6.4


  • Addition of "DataAsOf" attribute to show when the data was last updated per Hubitat's time (not the timestamp provided by the Neurio). This is formatted in the "MM/dd/yyyy HH:mm" with the hours being 24hr time to keep it simple.

Works fine, I'm suggesting year format is just 2 digits howeve

Download the Hubitat app