Exposing openHAB items Homekit but NOT Alexa

A bit of an odd challenge, this one:

I recently took the plunge and have kitted my house out with a few Alexa-enabled Sonos Ones. I installed the wonderful openHAB Alexa skill and, after the initial thrill of watching my many openHAB-connected devices appear in the Alexa app, I became disappointed by Alexa’s approach to grouping, which seems extremely limited. For example, I wanted to be able to turn the lights on in the room I’m currently in by saying ‘Alexa, lights on’ (rather than specifying the room first). This doesn’t work if you have multiple lights, because Alexa asks you which one you’re talking about, even if they are in different groups. Equally, I didn’t want to lose the functionality of controlling a device remotely from any location by specifying the room and item, i.e. ‘Alexa, turn on the lounge lamps’.

I wanted to have my cake and eat it. Enter openHAB rules!

Long story short, I overcame the problem by exposing an extremely limited set of generic items to Alexa. For example, I have a single, generic “light” item, one “lamp” item, one “speaker” item etc. with no rooms/groups specified in the Alexa app. I then have a rule which uses the triggering item to deduce which Sonos device received a voice command, and detects whether other rooms were mentioned in that command (using LastVoiceCommand in the Echo Binding). Finally, it switches the target device to the value of the generic switch. It works flawlessly!

However, I also want to be able to control everything manually via Homekit on our iPhones. The problem here is that the metadata labels required to expose items to Homekit also get picked up by Alexa, which re-introduces a whole mess of devices which defeats this approach.

So, my question is: Is there a way to expose items to Homekit, but NOT to Alexa?

I wonder why this is not running for you. That is easy to achive. Create an Alexa group e.g. “Bedroom”. Put in all lights of bedroom or your desired lights. Put in your Echo device of this room, too. Then just say “Alexa, lights on”.
This is also running with dimming, color and heating commands. You do not have to tell the groupname.

Afaik all tagged items are discovered by Alexa. But you can delete them or deactivate in Alexa APP.

In OH you can create two different items linked to the same channel. One is used for Alexa. The other one is used for HomeKit. Then delete unwanted “devices” either in Homekit or in Alexa APP.

If there is an other way, please one may correct me.

I have the same issue. I want to have unique .item files for HomeKit and Alexa and not have them interact. There needs to be a way to prevent HomeKit items from being recognized by Alexa.

As for deleting them in the app, every time I need to rediscover devices I’ll have to manually delete them again. This is unacceptable. Hopefully someone has a better solution.

I have still not found a foolproof fix, but the best workaround is to discover the devices to Alexa and disable (rather than delete) them in the Alexa app. This prevents them being rediscovered and becoming active again.

It’s been a while since I’ve messed with it and Alexa is behaving as intended.