Let's choose a characteristic and read it's value. 2a26 is the Device Information Firmware Revision String characteristic. The "short version" 4 characters are the 5th-8th bytes of the UUID. We can query this characteristic by using its "char value handle" - 0x0012 in this case. And, we can see our firmware version.
The characteristic output from gatttool can be confusing.
handle: This is the handle of the descriptor
char properties: This indicates the type of characteristic properties and is a bitfield. See table below
char value handle: This is the handle to use for the characteristic itself
uuid: this is the UUID associated with the characteristic
Here we're using the handle to identify the characteristic. If we used gatttools '-I' option to enter Interactive Mode, we can read via the char's UUID with the 'char-read-uuid' command. Options.
Can we change the version? How do we write to the char?
Nope. Let's try something else. I've been looking at this device for a while, and the app apk indicates that 02 indicates whether the device is awake and 03 controls the brightness. So, we can grep for the end part of the service UUID to find all characteristics that match and find the 02 and 03 chars.
Looking at the output, it looks like there's some sort of 3 byte preamble (00 09 06) followed by a 3 byte value. If the 02 char is actually an awake indicator, maybe we can turn it on and off.
Success. (disclaimer: This didn't actually turn off the light)