コード例 #1
0
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"})
コード例 #2
0
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)
コード例 #3
0
def get_line_status(line_id):
    return remote_controller.line_status(line_id=line_id)
コード例 #4
0
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()