In node-red, I hovered over the id field and selected the copy path option. I then pasted it into the Property field of the switch node. The drop down selection is set to "msg.". The paste inserted "payload.payload.settings.id".
The test is == and the value is buttonblue
The output of the node is to a debug node. I never see any output from that node. I've also tried "payload.settings.id", "settings.id", and just "id. None work.
I have another switch statement that tests a different field ("event"). It works fine. The switch test is down stream from "websocket in" and "sd input". The latter handles input from a Streamdeck. I couldn't find any examples on the web for the specific field. I'm sure it's a stupid user error.
The debug out certainly seems to show that your path is correct (with the double payload fields).
So if you are not seeing any output from the downstream debug node, I have to ask -- is the tab on the side pushed in (deactivated) or pulled out (active)? Which, if any, of the 3 output checkboxes (debug window, console, and node status) are checked? Is the source end of the wire connected to the switch port 1, or might the wire be routed "behind" the switch node (very unlikely)?
Assuming all of those are set correctly, the only other thing I can think of is that an exception is occurring -- but you would see that in the debug sidebar instead. Maybe try a catch node?
Looking at the debug output it certainly looks like it should be msg.payload.payload.settings.id
Configure the Switch with an Otherwise output, connect two (named) debug nodes to the outputs and show us what you see. If it sends it to the wrong output then possibly there are unprintable characters in the string. Feed it into a Function node containing node.warn(id length: ${msg.payload.payload.settings.id.length}) return msg`
and see what you get in the debug pane.
Now it works. I'm pretty sure @shrickus had it right about the debug node being deactivated. I cut and pasted the debug node and must not have noticed it was deactivated. So, yes, it was a stupid user error. My apologies for wasting your time.