First, use the right terms so that we're all on the same page. The telemetry messages from the device consist of a TOPIC and a PAYLOAD. As you say, the TOPIC is "tele/Study_Lamp/STATE" where "Study_Lamp" is actually the name of the device and used in the Shim plugin as the "UniqueID". So the MQTT broker needs to be subscribed to "tele/#" which is "tele" followed by anything. '#' is the MQTT wildcard.
Next, you need a trigger that will recognize this topic and queue the message up for the Shims plugin. There's a couple ways to do this, depending on how many devices you have, and if they're different types or not. But the simplest way is for the trigger to look for that exact topic:
Match: "tele"
Match: "Study_Lamp"
Match: "STATE"
End:
Then provide a message type which (in this case) will be unique to this one device: "##Study_Lamp##". Not that the hash marks are purely my convention and don't really mean anything. It's just a unique string for this specific device type.
And don't call the payload a RESULT, or imply it's an array of data. It's neither. In this case, it's a JSON string representing a Dict (nested Dicts, actually). So key/value pairs, not an array.
Based on this, and the payload you gave earlier, your shim would look like this:
- Screen Shot 2021-01-19 at 3.57.03 PM.png (175.76 KiB) Viewed 2491 times
I did not show the bottom part of that dialog, because most of it is for the sending commands part, which you already have working. There's a section below that which is actually related to the status (input) messages, and should be relocated towards the top. It's down there because I added that functionality later and didn't think to group it properly. One of these days I'll clean all that up.
I honestly thought that the writeup in the wiki had sufficient detail on how this all works. It would really help me and other users if you can tell me where the gaps are in that article that caused you to get lost.
https://github.com/FlyingDiver/Indigo-S ... asic-Setup