예제 #1
0
def update_brightness():
    response = APIResponse()
    mac = request.args.get("mac")
    brightness = request.args.get("brightness")

    if mac == None:
        logger.warning(
            "Rejected request to update brightness: missing MAC address")
        response.set_status(400, "Missing MAC address")
        return response.display()

    if brightness == None:
        logger.warning(
            "Rejected request to update brightness: missing brightness level")
        response.set_status(400, "Missing brightness")
        return response.display()
    else:
        brightness = validate_integer(response, "brightness", brightness, 0,
                                      100)
        if brightness == None:
            return response.display()

    packet = packets.GoveePacket.brightness_packet(brightness)
    device = device_handler.get_device(mac)
    device.packet_processor.queue_packet(packet, update_brightness_callback,
                                         brightness)
    response.set_status(200)
    logger.info(
        f"Queued brightness packet for {mac} with brightness level {brightness} and sending 200 response"
    )

    return response.display()
예제 #2
0
def get_light_status():
    response = APIResponse()
    mac = request.args.get("mac")

    if mac == None:
        logger.warning("Rejected request to read status: missing MAC address")
        response.set_status(400, "Missing MAC address")
        return response.display()

    device = device_handler.get_device(mac)
    response.set_status(200)
    response.set_data("status", device.on)
    logger.info(f"Read status for {mac}, sending 200 response")

    return response.display()
예제 #3
0
def turn_light_on():
    response = APIResponse()
    mac = request.args.get("mac")

    if mac == None:
        logger.warning(
            "Rejected request to turn light on: missing MAC address")
        response.set_status(400, "Missing MAC address")
        return response.display()

    packet = packets.GoveePacket.on_packet()
    device = device_handler.get_device(mac)
    device.packet_processor.queue_packet(packet, update_light_on_callback,
                                         None)
    response.set_status(200)
    logger.info(f"Queued on packet for {mac} and sending 200 response")

    return response.display()
예제 #4
0
def hue_saturation_update():
    response = APIResponse()
    mac = request.args.get("mac")
    hue = request.args.get("hue")
    saturation = request.args.get("saturation")

    if mac == None:
        logger.warning(
            "Rejected request to change colour: missing MAC address")
        response.set_status(400, "Missing MAC address")
        return response.display()

    if hue == None:
        logger.warning("Rejected request to change colour: missing hue")
        response.set_status(400, "Missing hue")
        return response.display()
    else:
        hue = validate_integer(response, "hue", hue, 0, 360)
        if hue == None:
            return response.display()

    if saturation == None:
        logger.warning("Rejected request to change colour: missing saturation")
        response.set_status(400, "Missing saturation")
        return response.display()
    else:
        saturation = validate_integer(response, "saturation", saturation, 0,
                                      100)
        if saturation == None:
            return response.display()

    device = device_handler.get_device(mac)
    brightness = device.brightness
    r, g, b = hsl_to_rgb(hue / 360, saturation / 100, brightness / 100)
    packet = packets.GoveePacket.rgb_packet(r, g, b)
    device.packet_processor.queue_packet(packet, update_colour_callback,
                                         (r, g, b))
    response.set_status(200)
    logger.info(f"Queued colour packet for {mac} and sending 200 response")

    return response.display()