Strangely, my new receiver doesn't appear in the Button Device pick list:
Devices in that list have the PushableButton capability. The Denon AVR doesn’t have that capability and my Onkyo receiver doesn’t either.
In your title you mention you used the swap app. I would assume the Pioneer driver has the PushableButton capability which is how you created this rule in the first place. When you swapped it parts of this rule are broken such as not being able to select the Denon in the drop down. I expect your pioneer device still exists in your hub and if you go to the events list I bet you will find event for those button presses which in turn call your actions for the Denon. If you were to delete the pioneer device this would all break.
Correct.
Sure enough:
So if buttons actually work with my Denon, why doesn't the Denon driver have the PushableButton capability? Should I submit a feature request to @mike.maxwell?
buttons for what exactly?
I have a Dashboard with buttons to select the input of my Denon receiver:
The buttons are working because they were originally created for a Pioneer which I 'Swap Apps Device' with the Denon.
If I wanted to create these buttons from scratch, I believe the Denon driver would have to implement the PushableButton capability.
What driver were you using? I just created a test Pioneer AVR device on my dev hub using the inbuilt driver and see it does NOT have the button capability. Like @mike.maxwell I am a bit confused on what benefits the button capability brings to the AVR.
FWIW my daughter likes to play music on my Denon receiver and I setup a virtual switch and when turns off the Denon Dynamic Volume feature turns off and when on it turns it back on to medium. Basically I have a RM Rule that triggers based on the state of this switch which she controls by a table side Pico in our family room.
Long story short you can create a Virtual Button device and expose that to your dashboard and then update your rule to use that Button device. Or since you might be getting rid of the Pioneer device just change its type to Virtual Button and use it and little changes to your rule. You might need to change it to use the Device driver temporarily to delete all states and state variables.
Looks like that's what I did. Turns out Pioneer VSX-32 Input
isn't my Pioneer Receiver but actually a virtual button:
and used that as the Button Controller Device:
Sorry for the confusion.
I still think PushableButton capability for receivers makes sense since there are so many actual buttons, but maybe I'm wrong?
Cool then rename it to Denon to reduce confusion and you are done.
Yes the receivers have tons of buttons and remotes do too but each of those buttons has to be mapped to a specific command on the receiver. I have a Denon AVR-X4200W which has 3 zones and a ton of Dolby surround sound options compared to other smaller models. It would be very difficult for HE to map out every command and that is why the common commands are included within the inbuilt driver.
From there Mike included the Send Msg command where you can send commands that aren't part of the inbuilt driver like my example above with the Dynamic Volume setting. Here is a PDF of the various commands you can send to AVRs, obviously each model supports different capabilities so YMMV:
DENON AVR control protocol
If you enable debug logging on your device and click the command buttons you will see what it is sending to the AVR and you can look within the above document for more details and other commands available.