# \[APP\]\[Pro\] Advanced Virtual Device (Device Capabilities App) with Unique Text Status Indicator

**URL:** <https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198>\
**Category:** Apps\
**Tags:** app, tools, virtual-device, device-capabilities, avd\
**Created:** [August 30, 2022, 7:24pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198 "2022-08-30T19:24:40Z")\
**Posts on this page:** 20\
**Page:** 36

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [May 16, 2025, 2:51am UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/714 "2025-05-16T02:51:39Z")

</div>

Thx Arie. @KaiF, it should show an opened / closed icon with class “lock”. But as Arie already wrote, the difference is just veeeery subtle.

With an AVD you can use a text field as status indicator, and through a flow card, you can use emiji’s for instance, and or “open” “CLOSED” text

Example:  
AVD settings:

 ![1000048885](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/2/e25e6883a9287778ad837328af114d03984fd381.jpeg)

Flow:

 ![1000048883](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/8/e899a726476d27aafa86d8f46004c1cc08d6789a.jpeg)

Results:

 ![1000048887](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/b/b/bbea501a5aea633d8e7f0179fc2a8f09a7268204.jpeg)

 ![1000048891](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/8/e8f17867270e4b0cdacd0d311eb4a8b7a997aa0d.jpeg)

---

<div class="post-metadata">

**Author:** ![KaiF](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/kaif/32/17746_2.png) [@KaiF](https://community.homey.app/u/KaiF)\
**Post date:** [May 18, 2025, 1:43pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/715 "2025-05-18T13:43:53Z")

</div>

Thx!!!

---

<div class="post-metadata">

**Author:** ![Arie\_J\_Godschalk](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/arie_j_godschalk/32/63027_2.png) [@Arie\_J\_Godschalk](https://community.homey.app/u/Arie_J_Godschalk)\
**Post date:** [May 18, 2025, 2:04pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/716 "2025-05-18T14:04:35Z")

</div>

> [@Peter\_Kawa](#):
>
> With an AVD you can use a text field as status indicator, and through a flow card, you can use emiji’s for instance, and or “open” “CLOSED” text

Plus @KaiF and @Peter_Kawa , if you use reflection, you wouldn’t even need the flow to set the value, just use a BLL expression:  
(The device and property that is relfected is the original lock with its locked property)

`$value?'locked 🔐' :'Unlocked 🔓'`

 ![1000161582](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/c/a/ca09ec857ef43a8dffca85c098552865220f0f88.jpeg)

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [May 18, 2025, 4:38pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/717 "2025-05-18T16:38:58Z")

</div>

Man, this is magic. Thanx!!

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [May 23, 2025, 7:07pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/718 "2025-05-23T19:07:28Z")

</div>

I now can “recycle” many flows which are still being used to set the status field (with `0 some_text`) of many AVD’S 🙏

---

<div class="post-metadata">

**Author:** ![aagehellem](https://avatars.discourse-cdn.com/v4/letter/a/e56c9b/32.png) [@aagehellem](https://community.homey.app/u/aagehellem)\
**Post date:** [May 25, 2025, 8:02am UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/719 "2025-05-25T08:02:17Z")

</div>

Does anyone know a way to install the AVD now? I can’t find any workable links to this app.

Thank you in advance!

---

<div class="post-metadata">

**Author:** ![Arie\_J\_Godschalk](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/arie_j_godschalk/32/63027_2.png) [@Arie\_J\_Godschalk](https://community.homey.app/u/Arie_J_Godschalk)\
**Post date:** [May 25, 2025, 8:45am UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/720 "2025-05-25T08:45:53Z")

</div>

> [@aagehellem](#):
>
> Does anyone know a way to install the AVD now?

Its in the app called: Device Capabilities.

---

<div class="post-metadata">

**Author:** ![aagehellem](https://avatars.discourse-cdn.com/v4/letter/a/e56c9b/32.png) [@aagehellem](https://community.homey.app/u/aagehellem)\
**Post date:** [May 25, 2025, 10:21am UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/721 "2025-05-25T10:21:11Z")

</div>

Thanks a lot!

---

<div class="post-metadata">

**Author:** ![Michael\_Fritzsche](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/michael_fritzsche/32/96689_2.png) [@Michael\_Fritzsche](https://community.homey.app/u/Michael_Fritzsche)\
**Post date:** [May 25, 2025, 10:27am UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/722 "2025-05-25T10:27:48Z")

</div>

I try to set up a virtual device based on a variable and selected Reflect: “Better Logic Library”, but the dropdown wit variables is empty

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/5/e/5eafaba473d077b7c604daf215dfc19d5dd1cd1d.png)

---

<div class="post-metadata">

**Author:** ![SunBeech](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sunbeech/32/111391_2.png) [@SunBeech](https://community.homey.app/u/SunBeech)\
**Post date:** [May 25, 2025, 11:40am UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/723 "2025-05-25T11:40:28Z")

</div>

Did you create a variable in the Beter Logic Library app (via it’s settings screen)?

 ![BLL Variables](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/c/3c8a603361a382fbcf3c06f047daa4a43fc28dd8.png)

---

<div class="post-metadata">

**Author:** ![Michael\_Fritzsche](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/michael_fritzsche/32/96689_2.png) [@Michael\_Fritzsche](https://community.homey.app/u/Michael_Fritzsche)\
**Post date:** [May 25, 2025, 12:10pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/724 "2025-05-25T12:10:04Z")

</div>

Now i did, and i was able to select, but it is not setable. When i try to set a value i get:  
{“message”:“Capability Not Setable”}

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [May 25, 2025, 1:00pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/725 "2025-05-25T13:00:44Z")

</div>

It’s readonly inside an AVD.  
You’ll have to use a flow to actually set a (bll) variable.

---

<div class="post-metadata">

**Author:** ![Arie\_J\_Godschalk](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/arie_j_godschalk/32/63027_2.png) [@Arie\_J\_Godschalk](https://community.homey.app/u/Arie_J_Godschalk)\
**Post date:** [May 25, 2025, 1:23pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/726 "2025-05-25T13:23:30Z")

</div>

> [@Michael\_Fritzsche](#):
>
> When i try to set a value i get:  
> {“message”:“Capability Not Setable”}

How are you trying to set it? When do you get this message?

---

<div class="post-metadata">

**Author:** ![Michael\_Fritzsche](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/michael_fritzsche/32/96689_2.png) [@Michael\_Fritzsche](https://community.homey.app/u/Michael_Fritzsche)\
**Post date:** [May 25, 2025, 2:17pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/727 "2025-05-25T14:17:01Z")

</div>

I created a flow which starts on value change of one of my power meters and executes a script. The goal is to get a virtual meter which only hold the rest of the currently consumed kWh after substracting all sub measuements:

```auto
// IDs deiner realen Geräte
const EgId = 'caf4c9eb-4271-4f98-bf65-4fa35381bf0d';
const Netz = '8a389ff0-6577-4401-92c2-ed844baf791f';
const NetzBueg = 'd1922f7c-9fce-4ea8-a16a-369503af9d62';
const NetzKuech = 'ed9c43ad-1eb7-4839-bba5-8abaeaa798a3';
const NetzSchlaf = '9a742ff4-d538-42c5-b6e7-6e921a772324';
const NetzWohnz = 'a501162e-a070-4b22-a7d5-3b48f2e1eb39';
const WohnzTv = '04303be3-bd22-44f4-a100-9699b8be6e20';
const KuehlSams = 'fa60698b-8b69-4fb2-87ee-a73bc0a430d1';
const KuelhlDrink = '7f8b4b25-4bc5-4e0e-9cc7-171a451de1b5';
const Gefrier = 'eb1c42a9-6875-400b-848c-123fc78dab01';

// IDs of the real devices
const EgRest = 'd41df970-4758-4789-af8a-8940f0cb412b';

async function main() {
  const deviceA = await Homey.devices.getDevice({ id: EgId });
  const deviceB = await Homey.devices.getDevice({ id: Netz });
  const deviceC = await Homey.devices.getDevice({ id: NetzBueg });
  const deviceD = await Homey.devices.getDevice({ id: NetzKuech });
  const deviceE = await Homey.devices.getDevice({ id: NetzSchlaf });
  const deviceF = await Homey.devices.getDevice({ id: NetzWohnz });
  const deviceG = await Homey.devices.getDevice({ id: WohnzTv });
  const deviceH = await Homey.devices.getDevice({ id: KuehlSams });
  const deviceI = await Homey.devices.getDevice({ id: KuelhlDrink });
  const deviceJ = await Homey.devices.getDevice({ id: Gefrier });

  const virtualDevice = await Homey.devices.getDevice({ id: EgRest });

  const valueA = deviceA.capabilitiesObj['meter_power'].value;
  const valueB = deviceB.capabilitiesObj['meter_power'].value;
  const valueC = deviceC.capabilitiesObj['meter_power'].value;
  const valueD = deviceD.capabilitiesObj['meter_power'].value;
  const valueE = deviceE.capabilitiesObj['meter_power'].value;
  const valueF = deviceF.capabilitiesObj['meter_power'].value;
  const valueG = deviceG.capabilitiesObj['meter_power'].value;
  const valueH = deviceH.capabilitiesObj['meter_power'].value;
  const valueI = deviceI.capabilitiesObj['meter_power'].value;
  const valueJ = deviceJ.capabilitiesObj['meter_power'].value;

  // calculation
  const diff = valueA - valueB - valueC - valueD - valueE - valueF - valueG - valueH - valueI - valueJ;

  await virtualDevice.setCapabilityValue('measure_Status.status1', diff);

  return `Differenz gesetzt: ${diff.toFixed(2)} kWh`;
}

return main();

```

The error appears on: virtualDevice.setCapabilityValue

at: [Homey Developer Tools](https://tools.developer.homey.app/tools/devices)  
i can see, that this value is read only… but why? How can i create is editable?

---

<div class="post-metadata">

**Author:** ![Jan-Erik\_Hallkvist](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/jan-erik_hallkvist/32/79000_2.png) [@Jan-Erik\_Hallkvist](https://community.homey.app/u/Jan-Erik_Hallkvist)\
**Post date:** [May 25, 2025, 2:30pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/728 "2025-05-25T14:30:29Z")

</div>

As Peter said you should assign your ’result’ to the variable you created earlier by using a BLL-card or in script which is more complicated. It will then show in AVD status.  
[link for script assignment](https://community.homey.app/t/i-need-to-set-a-variable-in-betterlogic-from-a-homeyscript/112724/3)

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [May 25, 2025, 2:33pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/729 "2025-05-25T14:33:16Z")

</div>

@Michael_Fritzsche  
Yea it should be able to write a BLL var’s value with Homeyscript as well.

```auto
http://HOMEY_IP_ADDRES/api/app/net.i-dev.betterlogic/VARIABLENAME/VALUE //Please ensure that the value matches the type, otherwise it will not be set.

```

Writing a value to an AVD field should be possible like this:

```auto
let dcApp = await Homey.apps.getApp({ id: 'nl.qluster-it.DeviceCapabilities' });
await dcApp.post({
  path: 'setvalue',
  body: {
    device: 'c34dc5b4-3c30-48a9-8a4e-014aea93d00d',
    field: 'measure_power',
    value: 501,
  },
});

```

Where did you find this comnand? Just curious…

> [@Michael\_Fritzsche](#):
>
> `await virtualDevice.setCapabilityValue('measure_Status.status1', diff);`

---

<div class="post-metadata">

**Author:** ![Michael\_Fritzsche](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/michael_fritzsche/32/96689_2.png) [@Michael\_Fritzsche](https://community.homey.app/u/Michael_Fritzsche)\
**Post date:** [May 25, 2025, 3:43pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/730 "2025-05-25T15:43:24Z")

</div>

> [@Peter\_Kawa](#):
>
> ```auto
> let dcApp = await Homey.apps.getApp({ id: 'nl.qluster-it.DeviceCapabilities' });
> await dcApp.apiPost({
> path: 'setvalue',
> body: {
> device: 'c34dc5b4-3c30-48a9-8a4e-014aea93d00d',
> field: 'measure_power',
> value: 501,
> },
> });
> 
> ```

this leads to an error:  
{“message”:“dcApp.apiPost is not a function”}

when i use .post instead of apiPost i get:  
{“message”:“Cannot read properties of null (reading ‘split’)”}

My code example came from ChatGpt 😉

[EDIT] Got it running! Thanks

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/7/d/7d21d8e5c997847bae2f4e3008a409223d6d5859.png)

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [May 25, 2025, 7:42pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/731 "2025-05-25T19:42:13Z")

</div>

I missed this comment apparently 😬🧐

> ![1000049357](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/9/a/9af8735b7dd587da29cf15195c3bdc145eabf79b.jpeg)

There were some changes in Hscript a while ago, when thay made it using Homey api:

> [@HomeyScript looking for testers](https://community.homey.app/t/homeyscript-looking-for-testers/109249):
>
> We are looking for some test users for the new HomeyScript version [HomeyScript App for Homey | Homey](https://homey.app/en-nl/app/com.athom.homeyscript/HomeyScript/test/) that uses our new [homey-api - npm](https://www.npmjs.com/package/homey-api) library under the hood for new scripts. All old scripts will keep working and can be upgraded but it’s not necessary. To upgrade scripts the following guide can be followed. [Tutorial: Migrating deprecated scripts - HomeyScript (athombv.github.io)](https://athombv.github.io/com.athom.homeyscript/tutorial-migrate.html) This has been a pain point for some time since the web api docs have been for our new api but HomeyScript was still …

---

<div class="post-metadata">

**Author:** ![Eric\_B](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/eric_b/32/10238_2.png) [@Eric\_B](https://community.homey.app/u/Eric_B)\
**Post date:** [May 27, 2025, 8:07pm UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/732 "2025-05-27T20:07:56Z")

</div>

Hi all,  
I have downloaded the app a long time ago, but didn’t use it until now.  
With the help of the templates I was able to create a perfect working AVD.  
I used the “pushable Device tile…” template, but with this template i am not able to set the indicator field.  
So I would like to combine this template with the “unique text status indicator on device tile” template, but i have no idea how to do that.  
How to get both capabilities on the same AVD?

I use this to control and see the status of my NUKI lock.  
On the homey webapp the icon changes from an open lock to a closed lock, but on the IOS homey-app the icon doesn;t change, it stays the closed lock-icon.

Eric

---

<div class="post-metadata">

**Author:** ![DirkG](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dirkg/32/118897_2.png) [@DirkG](https://community.homey.app/u/DirkG)\
**Post date:** [May 28, 2025, 9:55am UTC](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198/733 "2025-05-28T09:55:46Z")

</div>

I control my NUKI Smart Lock 3.0 Pro via MQTT and have also created an AVD for it. On my iPhone, the lock symbol is displayed correct opened or closed depending on the status:

**Closed**

 ![Picsew_20250528114223](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/4/b/4bf9a9e0fa9dfa715add8682326b46729270d269.jpeg)

**Opened**

 ![Picsew_20250528114310](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/4/343c23512017f152c43884c401dd75971ff94d7a.jpeg)

Device Capabilities App: v2.15.4 ([test version](https://homey.app/a/nl.qluster-it.DeviceCapabilities/test/))  
Homey Smartphone App: v9.3.0.1760

[Previous page](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198.md?page=35)

[Next page](https://community.homey.app/t/app-pro-advanced-virtual-device-device-capabilities-app-with-unique-text-status-indicator/68198.md?page=37)
