Changing driver screen text on phone

I’m looking into a way to change the wording in a driver how it appears on the screen of the phone. I build my own pool controller and using a regular thermostat with the generic Z-wave driver. It works great but I would love the see the wording changed on the screen. I want the change for example the text “Heating temperature” and “Fan mode”. I cloned the standard Z-Wave driver but I don’t see the exact wording in the driver. Any suggestions?

Those are driven by the capability presentation. If you’re using standard capabilities then you can’t change it. You can always create your own custom capabilities

2 Likes

Hi, @Ron_Biegelaar!

@RBoy is right, the titles you see there belong to the capabilities presentation and there’s now an option to change that label in the detail view of the device but in the device history, the original labels will appear.
Here’s an example:

In case you don’t want to get confused, then, you can use the custom capabilities. However, remember they won’t be recognized by some third-party integrations like Alexa.

1 Like

Hi @nayelyz ,

Thanks so much for responding as well.
I think this is exactly where I’m looking for. Just a different name. I’m a tech guy but not a programmer. I think I can work it out but where in the code do I put these lines?

Ok, thank you for letting me know so I can give you further details.

  1. Please, install the SmartThings CLI
  2. If you have the device installed, execute this command in the CLI:
smartthings devices 
  1. Copy the device ID of the one controlled by the driver and execute this command:
smartthings devices deviceID -j
  1. Copy the content in the field presentationId and use this command:
smartthings presentation:device-config presentationID -j -o=deviceConfig.json

This will generate the file deviceConfig.json where you saved the smartthings file of the CLI.

  1. Open the deviceConfig.json file and modify the sections of the capabilities you need as follows:
    Note: I don’t know exactly which capabilities you’re trying to create so I used the generic nomenclature
{
    "component": "main",//this is not modified unless you have different components, the default is "main"
    "capability": "capabilityID", //For example thermostatFanMode
    "version": 1, //Also remains the same
    "values": [
        {
            "key": "attributeName.value", //Eg. the attribute name depends on the capability config for thermostatFanMode is "thermostatFanMode" as well
            "label":"Text to display"
        }
   ],
    "patch": []
}
  1. Save the changes in the file and use this command:
smartthings presentation:device-config:create -i deviceConfig.json
  1. The CLI will show you the result and provide you with a new VID or presentationID.
  2. In the driver, open the folder “profiles” and add the metadata section like the sample below and replace xxxx-xx-xxxx by he value you got in #7
name: profileName
components:
- id: main
  capabilities:
  - id: thermostatFanMode
    version: 1
  categories:
  - name: Thermostat
metadata: ##this section
  mnmn: SmartThingsCommunity
  vid: "xxxx-xx-xxxx"
  1. Package, publish and install the driver again. This single command is used to execute the three actions:
/smartthings edge:drivers:package /driverpath/ --channel=channelD --hub=Hub-device-ID
  1. You might have to reinstall the device for it to use the new VID. To verify this, follow steps #2 and #3 again. Check the presentationID is the one you created.
  2. To check the configuration of the presentation, you can use the command:
smartthings presentation presentationID -j

Please, let me know if you have any questions.

Hi Nayelyz,

We’re making progress. I had some issues with creating the json file but finally got it sorted. I have everything ready to update the driver but have no idea where to find it or download it.

Can you please point me in the right direction?

Oh, I got confused because you mentioned the following:

So, where are those files you edited/created?

I thought you followed these steps:

  1. Went to the official drivers’ repository and download them.
  2. Extracted the content of that .zip folder and found the Z-Wave driver you needed.
  3. Then, edited the corresponding files (fingerprints.yml, config.yml)
  4. then, package, publish and install the driver.
  5. Paired the device to the Hub and saw the current labels of the capabilities in the details page which you wanted to change.

If this isn’t what you did, can you describe what you have until now or what were you referring to by “build my own pool controller”, please?

Ohh LOL. That’s the hardware part of the whole controller (thermostat, relays, sensors etc. Nothing on the driver part. I use a generic driver. With some label changes and a small adjustment it will work for me.

Ok, so, considering your comment here as well:

What you created isn’t a driver (Lua-based program), it is a DTH or device handler (Groovy-based program) which is part of the legacy platform (take a look at this announcement).
So, I suggest you start with drivers rather sooner than later.

But, to use it in a DTH, you need to do the following:

  1. Start creating a new Z-Wave DTH as you mentioned.
    Note: I forgot to mention that we need to create a new one because the presentation used in each DTH is cached, so, if we use the same one, it won’t take into consideration the new VID
  2. Before saving it, edit its metadata properties and add “vid” and “mnmn” there. For example:

    Note: Remember to change the DTH’s name
  3. Save the DTH, and use it for your device. It might work if you only change the device type selected and clear the app’s cache, but sometimes you will need to reinstall the device.

Note: To clear the app’s cache (for Android only), first, close the ST app, then, go to your phone’s settings > apps > find the ST app > storage > clear the app’s cache (do not press clear the app’s data)

Great, I give it a shot. I’m not unfamiliar with ST but the Edge approach is a whole new Era.

Hi Nayelyz,

Any idea how I can switch between hubs in the cli? I have a few hubs that I’m controlling but when I try to upload a driver (test package Hello World) to another hub, it gives me an error 500. When I don’t add the hub ID in the command line it goes to one hub.