How can I extract included Virtual Device Driver Groovy code?

G'day all, I'd like to grab the code for the Virtual Thermostat device driver - can anyone assist on how to get this? The code isnt on the Public GitHub.

For those wondering what hare-brained scheme I'm hatching ... well, for context, I'm currently using my Vera Edge as an HVAC controller slaved to the HE House Modes as Google are pr!cks (see WWN fiasco) and my Honeywell D6 Pro Wifi thermostat isn't supported on HE.

Anyhoo this works great, however, being one of those types that can't leave well enough alone, I realized that I can get all the Nest and T6 Pro state data from Vera via HTTP get's and that will allow me to at least view what my Vera is doing from a HE Dashboard.

And along the way, I figured out how to do this using RM and GV's and then how to push those variables over to a Virtual device. However, the include Virtual Thermostat doesn't match up its fields to the nest all that well so Id like to customize the HE VT driver to fix this.

Hope this makes sense?

Only the code that's on the Public Github repo is revealed. Everything else is proprietary, internal to Hubitat.

1 Like

I'd be more than happy to share my Virtual nest Driver back to the community via the Public GitHub or my own. All I'm going to be doing is syncing up the fields.

I'm not a Hubitat employee and thus can't respond to your appeal with more than advice..

I've made quite a few 'knock-offs' myself, so I know the steps but for what I use them for, I've rarely ever completed one. I typically building one to test something, the existing has already tested all it can do, but I need one or two more additions.. I generally just get those additions going.

Which means my VirtualThermo Driver is about as close to useless as it gets. I built it to test ONLY LastRunningMode, which is special to Google Home, if I remember right.

However, my technique is to use my GetAttributesApp to cough out the Capabilities, Attributes and Commands and then build a virtual to give the same result.. then fill in the functionality.


Cheers, I'll have a play.

I also found the NST Thermostat driver on Github so I might be able to mangle that to requirements.

@bcopeland before I go and make life hard for myself, any chance of publishing the "Virtual Thermostat" device driver on GitHub?

PS, I could use RM to transform the variables to match the Virtual driver, but that will be painful and clumsy imo.

1 Like

On second thoughts, this might actually be the smarter option. :thinking:

There's also this one from the ST platform SmartThingsPublic/zwave-thermostat.groovy at production · SmartThingsCommunity/SmartThingsPublic · GitHub

1 Like

I realised there are only a couple of variables that need transforms -eg HeatOn to heat and CoolingOn to cool so i'm plugging away capturing all the variables and then I'll add in some basic IF, THEN, ELSE statements to place the right variable into the Virtual Thermostat.

Looks like this atm (havent done the transform logic): :scream:

you can probably get it off of smarthings and port it without too much difficulty.. if you dont have access let me know.

I dont have an ST, I have a Vera Edge. Thankfully I can access all the underlying JSON and XML code to find out which variables are where and what the GET string is.

You don’t need the hub. All of their “Device Handlers” (drivers in HE) and SmartApps are in the public repot on github:

It’s pretty easy to port most code and there is a thread here that discusses the most common things you will need to modify. For example here is their Simulated Thermostat:

You can remove the tiles block and follow along here:


So it turns out that I'm a dumb a$$ - I didn't realize the the below were buttons, all I needed to do was put in the attributes I wanted and click the button! :man_facepalming:

1 Like

Everything under Current States there on the right of your screen capture, are Attributes.

If you are going to build out a Dashboard, one Template that's available is called "Attribute" -- you pick your Device, and then pick Attribute, then it offers the list you see.

It's space consumptive to have a Dashboard Tile per Attribute, but when you need 'just one more' it's often the simplest. You may not be that far along yet, but along with "Really? THAT is a button?" you now have Attributes :smiley:

Cheers, I got everything working the way I wanted it with the basic Dashboard Tile.

Screen Shot 2020-09-09 at 10.29.04 am

I documented how I built my State Importer & State Controller here:

hi @csteele, is your example for a thermostat driver still working with google home? For the life of me I can't get mine to integrate with google home. I tried to set lastRunningMode as state variable, as an attribute, as a data value but it doesn't work :frowning: Do you have it in github somewhere? Thanks