def cancel_rule(): """User can remove rule from ongoing rules table.""" content = request.json["list"] for rule_id in content: # select l.interval_id, li.name from life as l, lines as li where id = {0} and l.line_id = li.number res = database.select(database.QUERY[mn() + "_1"].format(rule_id), "fetchone") if res is None: logging.error( "No {0} rule/interval id in database".format(rule_id)) abort(500) interval_id = res[0] ongoing_rule_id = res[2] # branch_name = res[1] # "UPDATE life SET state=4 WHERE interval_id = '{0}' and state = 1 and rule_id = 1" database.update(database.QUERY[mn() + "_2"].format(interval_id)) res = database.select( database.QUERY[mn() + "_select_ongoing_rule"].format(ongoing_rule_id), "fetchone", ) if res is None: logging.info("No intervals for {0} ongoing rule. Remove it".format( ongoing_rule_id)) database.update( database.QUERY[mn() + "_delete_ongoing_rule"].format(ongoing_rule_id)) logging.info("Rule '{0}' canceled".format(rule_id)) update_all_rules() try: lines = {} for line_id, line in BRANCHES_SETTINGS.items(): response_status = remote_controller.line_status(line_id=line_id) lines[line_id] = dict(id=line_id, state=int(response_status[line_id]["state"])) arr = form_responce_for_branches(lines) send_branch_status_message(arr) except Exception as e: logging.error(e) logging.error("Can't get Raspberri Pi pin status. Exception occured") abort(500) send_history_change_message() return json.dumps({"status": "OK"})
def greenhouse_status(): """Return status of lightingn relay.""" try: lines = {} for line_id, line in BRANCHES_SETTINGS.items(): if line["line_type"] == "greenhouse": response_status = remote_controller.line_status( line_id=line_id) lines[line_id] = dict(id=line_id, state=int( response_status[line_id]["state"])) arr = form_responce_for_branches(lines) send_branch_status_message(arr) return jsonify(branches=arr) except Exception as e: logging.error(e) logging.error("Can't get Raspberri Pi pin status. Exception occured") abort(500)
def get_line_status(line_id): return remote_controller.line_status(line_id=line_id)
def add_ongoing_rule(rules): now = datetime.datetime.now() for rule in rules: rule["line_id"] = int(rule["line_id"]) rule["line_name"] = rule["line_name"] rule["time"] = int(rule["time"]) rule["intervals"] = int(rule["intervals"]) rule["time_wait"] = int(rule["time_wait"]) rule["repeat_value"] = int(rule["repeat_value"]) rule["date_start"] = convert_to_datetime(rule["date_start"]) rule["time_start"] = convert_to_datetime(rule["time_start"]) rule["date_time_start"] = datetime.datetime.combine( rule["date_start"], rule["time_start"].time()) rule["end_date"] = convert_to_datetime(rule["end_date"]) rule["active"] = 1 rule["rule_id"] = str(uuid.uuid4()) rule["days"] = -1 if rule["date_start"].date() == rule["end_date"].date(): date_delta = rule["end_date"].date() - now.date() if date_delta.days == 0: rule["days"] = 0 if date_delta.days == 1: rule["days"] = 1 # "INSERT INTO life(line_id, time, intervals, time_wait, repeat_value, date_start, " # "time_start, end_date, active, rule_id) " # "VALUES ({0}, '{1}', {2}, '{3}', {4}, {5}, '{6}', {7}, {8}, {9}") # insert into ongoing table database.update(database.QUERY[mn()].format( rule["line_id"], rule["time"], rule["intervals"], rule["time_wait"], rule["repeat_value"], rule["date_time_start"], rule["end_date"], rule["active"], rule["rule_id"], )) # update rules; update_rules_from_ongoing_rules(rule) logging.info("Ongoing rule added. {0}".format(str(rule))) template = render_template("ongoing_rule_single.html", n=rule) send_ongoing_rule_message( channel="add_ongoing_rule", data={ "template": template, "rule_id": rule["rule_id"], "days": rule["days"], }, ) update_all_rules() try: lines = {} for line_id, line in BRANCHES_SETTINGS.items(): response_status = remote_controller.line_status(line_id=line_id) lines[line_id] = dict(id=line_id, state=int(response_status[line_id]["state"])) arr = form_responce_for_branches(lines) send_branch_status_message(arr) except Exception as e: logging.error(e) logging.error("Can't send updated rules. Exception occured") send_history_change_message()