def save_device(id): """ Save an edited device definition :param roomid: :return: """ # NOTE # The jQuery $.ajax call sends arguments as the data property[TPLink Python Library](https://github.com/GadgetReactor/pyHS100) # 5. [Meross Python Library](https://github.com/albertogeniola/MerossIot) # in the initiating call. The arguments show up in the # request.form property provided by Flask. So, # data: { 'state': new_state } --> request.form['state'] name = request.form['name'] location = request.form['location'] device_mfg = request.form['mfg'] address = request.form['address'] channel = int(request.form["channel"]) color = request.form["color"] brightness = request.form["brightness"] api_req = AHPSRequest() r = api_req.update_device(id, name, location, device_mfg, address, channel, color, brightness) # We are obligated to send a json response if r: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def save_device_program(id): """ Save an edited device program :param roomid: :return: """ program = {"id": id} program["name"] = request.form['name'] program["day-mask"] = request.form['daymask'] program["trigger-method"] = request.form['triggermethod'] program["time"] = request.form['time'] program["offset"] = request.form['offset'] program["randomize"] = normalize_boolean(request.form["randomize"]) program["randomize-amount"] = request.form['randomizeamount'] program["command"] = request.form['command'] program["color"] = request.form['color'] program["brightness"] = request.form['brightness'] api_req = AHPSRequest() r = api_req.update_device_program(program) if r: logger.debug("Update device program: %s", json.dumps(program, indent=4)) # We are obligated to send a json response return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def set_groups_state(group_id): """ Change state of all devices in group to on or off :param groupid: :return: """ # NOTE # The jQuery $.ajax call sends arguments as the data property # in the initiating call. The arguments show up in the # request.form property provided by Flask. So, # data: { 'state': new_state } --> request.form['state'] arg = request.form['state'] api_req = AHPSRequest() if arg == "on": res = api_req.group_on(group_id) elif arg == "off": res = api_req.group_off(group_id) else: # Return an error res = None # We are obligated to send a json response if res: resp = jsonify(res) if res["result-code"]: resp.status_code = HTTPStatus.BAD_REQUEST else: resp.status_code = HTTPStatus.OK return resp response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def define_device(): """ Save an new device definition :param roomid: :return: """ # NOTE # The jQuery $.ajax call sends arguments as the data property # in the initiating call. The arguments show up in the # request.form property provided by Flask. So, # data: { 'state': new_state } --> request.form['state'] name = request.form['name'] location = request.form['location'] device_mfg = request.form['mfg'] address = request.form['address'] channel = int(request.form["channel"]) color = request.form["color"] brightness = request.form["brightness"] api_req = AHPSRequest() r = api_req.define_device(name, location, device_mfg, address, channel, color, brightness) # We are obligated to send a json response if r: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def discover_devices(): api_req = AHPSRequest() res = api_req.discover_devices() if res and "result-code" in res.keys() and res["result-code"] == 0: return jsonify({}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def delete_action_group(group_id): api_req = AHPSRequest() res = api_req.delete_action_group(group_id) if res: return jsonify(res) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def get_device(id): api_req = AHPSRequest() res = api_req.get_device(id) if res: return jsonify({"data": res["device"]}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def get_action_group_devices(group_id): api_req = AHPSRequest() res = api_req.get_action_group_devices(group_id) if res and "devices" in res.keys(): return jsonify({"data": res["devices"]}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def get_available_meross_devices(): api_req = AHPSRequest() res = api_req.get_all_available_devices("meross") if res and "devices" in res.keys(): kv = res["devices"] return jsonify({"data": kv}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def add_device_to_group(group_id, device_id): api_req = AHPSRequest() r = api_req.assign_device_to_group(group_id, device_id) if r and r["result-code"] == 0: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def get_device_program(id): """ Get the device program for progran ID :param id: :return: """ api_req = AHPSRequest() res = api_req.get_program_by_id(id) if res: return jsonify({"data": res["program"]}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def get_available_group_devices(id): """ Get all devices available for assignment to a given group ID :param id: The group ID for avialable devices :return: """ api_req = AHPSRequest() res = api_req.get_available_devices_for_group_id(id) # Build response with program summary if res and "devices" in res.keys(): return jsonify({"data": res["devices"]}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def delete_device_program(device_id, program_id): """ Delete a program from a device :param id: :return: """ api_req = AHPSRequest() r = api_req.delete_device_program(device_id, program_id) # We are obligated to send a json response if r: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def delete_action_group_device(group_id, device_id): """ Delete a from from an action group :param group_id: :param device_id: :return: """ api_req = AHPSRequest() r = api_req.delete_action_group_device(group_id, device_id) # We are obligated to send a json response if r and r["result-code"] == 0: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def delete_device(id): """ Delete a device definition :param roomid: :return: """ api_req = AHPSRequest() r = api_req.delete_device(id) # r = {"message": "Success"} # We are obligated to send a json response if r: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def get_all_programs(): """ Get all programs :param id: :return: """ api_req = AHPSRequest() res = api_req.get_all_programs() # Build response with program summary if res: for p in res["programs"]: p["summary"] = build_program_summary(p) return jsonify({"data": res["programs"]}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def get_available_device_programs(id): """ Get all programs available for assignment to a given device ID :param id: The device ID for avialable programs :return: """ api_req = AHPSRequest() res = api_req.get_available_programs_for_device_id(id) # Build response with program summary if res: for p in res["programs"]: p["summary"] = build_program_summary(p) return jsonify({"data": res["programs"]}) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def save_action_group(id): """ Save an edited action group :param roomid: :return: """ group = {"group-id": id, "group-name": request.form['name']} api_req = AHPSRequest() r = api_req.update_action_group(group) if r: logger.debug("Update action group: %s", json.dumps(group, indent=4)) # We are obligated to send a json response return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def set_new_device_state(): """ Change state of a new device to on or off :return: """ # NOTE # The jQuery $.ajax call sends arguments as the data property # in the initiating call. The arguments show up in the # request.form property provided by Flask. So, # data: { 'state': new_state } --> request.form['state'] state = request.form['state'] mfg = request.form['mfg'] address = request.form['address'] channel = request.form['channel'] name = request.form['name'] if "name" in request.form.keys( ) else "new device" api_req = AHPSRequest() if state == "on": color = request.form['color'] if "color" in request.form.keys() else "" brightness = request.form[ 'brightness'] if "brightness" in request.form.keys() else 100 res = api_req.new_device_on(mfg, address, channel, name, color, brightness) elif state == "off": res = api_req.new_device_off(mfg, address, channel, name) else: # Return an error res = None # We are obligated to send a json response if res: resp = jsonify(res) if res["result-code"]: resp.status_code = HTTPStatus.BAD_REQUEST else: resp.status_code = HTTPStatus.OK return resp response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def create_new_program(): program = {} program["name"] = request.form['name'] program["day-mask"] = request.form['daymask'] program["trigger-method"] = request.form['triggermethod'] program["time"] = request.form['time'] program["offset"] = request.form['offset'] program["randomize"] = normalize_boolean(request.form["randomize"]) program["randomize-amount"] = request.form['randomizeamount'] program["command"] = request.form['command'] program["color"] = request.form['color'] program["brightness"] = request.form['brightness'] api_req = AHPSRequest() res = api_req.define_device_program(program) if res: return jsonify(res) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def set_devices_state(id): """ Change state of device to on or off :param roomid: :return: """ # NOTE # The jQuery $.ajax call sends arguments as the data property # in the initiating call. The arguments show up in the # request.form property provided by Flask. So, # data: { 'state': new_state } --> request.form['state'] arg = request.form['state'] api_req = AHPSRequest() if arg == "on": if "color" in request.form.keys(): color = request.form['color'] else: color = None if "brightness" in request.form.keys(): brightness = request.form['brightness'] else: brightness = None res = api_req.device_on(id, color=color, brightness=brightness) elif arg == "off": res = api_req.device_off(id) else: # Return an error res = None # We are obligated to send a json response if res: resp = jsonify(res) if res["result-code"]: resp.status_code = HTTPStatus.BAD_REQUEST else: resp.status_code = HTTPStatus.OK return resp response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def define_action_group(): """ Save an new action group definition :param roomid: :return: """ # NOTE # The jQuery $.ajax call sends arguments as the data property # in the initiating call. The arguments show up in the # request.form property provided by Flask. So, # data: { 'state': new_state } --> request.form['state'] name = request.form['name'] api_req = AHPSRequest() r = api_req.define_action_group(name) # We are obligated to send a json response if r and r["result-code"] == 0: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response
def save_all_devices(): """ Save all device definitions :return: """ devices = request.get_json() api_req = AHPSRequest() for device in devices: r = api_req.update_device(device["id"], device["name"], device["location"], device["type"], device["address"]) if not r: response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response # We are obligated to send a json response if r: return jsonify(r) response = jsonify(api_req.last_error) response.status_code = HTTPStatus.BAD_REQUEST return response