def parse_light_state(payload):
    hue = BitParser.parse_int("u16", payload[0:16])
    saturation = BitParser.parse_int("u16", payload[16:32])
    brightness = BitParser.parse_int("u16", payload[32:48])
    kelvin = BitParser.parse_int("u16", payload[48:64])
    reserved1 = BitParser.parse_int("s16", payload[64:80])
    power = BitParser.parse_int("u16", payload[80:96])
    label = BitParser.parse_string(payload[96:352])  #32 byte string
    reserved2 = BitParser.parse_int("u64", payload[352:416])
    return {
        "color": {
            "hue": hue,
            "saturation": saturation,
            "brightness": brightness,
            "kelvin": kelvin
        },
        "power": power,
        "label": label
    }
def parse_device_set_group(payload):
    #need to parse byte array
    group = payload[0:128]  #byte array of 16 bytes (guid)
    label = BitParser.parse_string(payload[128:384])  #32 byte string
    updated_at = BitParser.parse_time("u64", payload[384:448])
    return {"group": "GUID", "label": label, "updatedAt": updated_at}
def parse_device_set_location(payload):
    location = payload[0:128]  #byte array of 16 bytes (guid)
    label = BitParser.parse_string(payload[128:384])  #32 byte string
    updated_at = BitParser.parse_time("u64", payload[384:448])
    return {"location": "GUID", "label": label, "updatedAt": updated_at}
def parse_device_state_label(payload):
    label = BitParser.parse_string(payload)  #32 byte string
    return {"label": label}
def parse_device_set_label(payload):
    label = BitParser.parse_string(payload[0:256])  #32 byte string
    return {"label": label}