Homey Custom Capabilities

I dont have custom tiles or super tiles, even though I’m supposed to have ‘premium trial’. Maybe what I am missing is there?

But even if it is, as I stated before I think gauge tiles, graph tiles and action tiles, at least specific for Homey integration, would be basic stuff I would expect to be present without premium. But maybe I’m just being cheap :wink:

EDIT: Just found where I can create a super tile. Will try it.
Edit 2: Just tried. With Super Tile still not seeing how to do it for the options Im looking for. I do see a ‘hyperlink’ option. I guess theoretically that could be used to do some kind of GET request to Homey, if there wouldn’t be any authentication requiered, and assuming it is possible to give commands to Homey using a GET. But I really dont’ want to get into that kind of semi-coding. I like the simple drag-and-drop dashboard creation that SharpTools can provide.

This is showing an example of a device with an ENUM capability. Now I can only show the state of charge_mode in a tile. But I would like to set the 3 possible states also from a tile with a click action.

oh, and I see that also the NUMBER capability called meter_setpoint cannot be set from a tile or super tile.

So in short: Homey capabilities can be read-only for users. And displaying those in SharpTools tiles works fine. But some Homey capabilities are user settable, and controlling those from SharpTools is not supported for the majority of device capabilities. I only found on/off to be supported so far.

Thanks for sharing the feedback. I’ve noted the feedback around seeing if there’s a way to more easily expose the ‘ENUM’ options for Homey devices that implement that type of custom capability.

Homey custom capabilties don’t map to a standard tile and require using a Super Tile or Hero Attribute Tile. That being said, the commands for those custom capabilities are mapped over, but you would need to use the SharpTools Rule Engine to expose them.

Before we get into that, I would note that we mapped over most (all?) of the official capabilities from Homey and the vast majority of those have a standard tile to render them in an intuitive way. The full list is quite long, but here’s a list of the most common Homey capabilities that have mappings:

button
onoff
dim
light_hue
light_saturation
light_temperature
light_mode
locked
garagedoor_closed
measure_temperature
measure_battery
measure_humidity
measure_pressure
thermostat_mode
target_temperature
alarm_water
alarm_smoke
alarm_tamper
alarm_motion
alarm_contact
speaker_playing
volume_set
volume_mute
speaker_next
speaker_prev
speaker_artist
speaker_album
speaker_track
windowcoverings_closed
windowcoverings_state
windowcoverings_set
windowcoverings_tilt_up
windowcoverings_tilt_down
windowcoverings_tilt_set
measure_co
measure_co2
measure_pm25
measure_power
meter_power
measure_voltage
measure_current
measure_luminance
measure_ultraviolet

The majority of common device types like lights, locks, thermostats, buttons, garage doors, music players, window coverings, etc have standard tile types. Of course some of capabilities are just measurements, so they are inherently read only and work fine with a Hero Attribute or Super Tile.

Adjusting the Value of Custom Capabilties

As mentioned above, you can use SharpTools Rules to adjust the values of custom capabilities. I’m going to include a few screenshots here to help clarify the approach.

When custom capabilities are mapped over, the device sync process automatically maps over the capabilities into what we call attributes and if the capability is setable it maps that over to what we call commands.

As you may guess from the above, attributes are the current status of the device + capability. Whereas commands are a way to instruct your device to do something. Common commands are things like on(), off(), setLevel(level), etc.

As mentioned in the original thread, Super Tiles have the ability to directly call commands that don’t require any parameters. In the examples above, on() and off() are direct commands that don’t require any parameters. On the other hand, setLevel(level) requires that you specify which level you want the device set to – in otherwords, it requires a parameter so it is not displayed in the direct list of Thing Commands for Super Tiles

Custom Capabilities and Specifying Values

That being said, you still have the ability to send commands like setLevel(level) to your device or even set custom attributes like your charge_mode. For custom capabilities, there are four different commands that are mapped over when a device capability is setable:

Data Type Command
boolean setHomeyBoolean(capability, value)
number setHomeyNumber(capability, value)
string setHomeyString(capability, value)
enum setHomeyString(capability, value)

So in your example above, your device has a custom capability called charge_mode and you can use the setHomeyString('charge_mode', 'CHARGE') command to tell it to switch to charging.

To do this, you can use a SharpTools Rule to invoke that command. The only thing the rule needs is your desired device action in the Flow (no Trigger needed). Then you can add the rule directly to your dashboard from the ‘Rules’ section of the Add Item picker or you can use it in a Super Tile or any tile that supports Hyperlinks.

:warning: It looks like there’s a bug where the ENUM values aren’t getting exposed in the Rule Engine as expected. In the meantime, you can toggle the Advanced switch in the top-right corner of my above screenshot on, then tap the list icon to the left of the value field, change it to String, and then enter a valid value from your previous screenshot (eg. CHARGE, STOP, DISCHARGE).

Tap to show full rule screenshot

 

The same concept applies for other capability types like booleans (tap to expand)

image

The result being that I can create a dashboard interface that lets me control me Alarm as I desire.

In this example, I’m using a Hero Attribute tile to display the current alarm status and then I have three different Rule tiles below that to let me control the alarm.

Of course, you could also use a Super Tile to do this and consolidate everything into a single tile if you prefer. And as mentioned at the very start of this reply, I’ve noted the feedback to see if we can make it easier to expose these Boolean and ENUM type capabilities.

1 Like

Super, thx for your extended ‘manual’! I will try if I can make it work👍

I can confirm that there are problems with the ENUM variables

A lot more work then I anticipated, but I managed to get some stuff going :partying_face:

Thx for your help so far @josh :kissing_heart:

1 Like