Esempio n. 1
0
def main():
    """if this module is run, connect to the database and print it out"""
    import sys
    db = JawsDB()

    if len(sys.argv) > 1:
        if sys.argv[1] == 'create_tables':
            db.create("CREATE TABLE dryingfan"
                      "(time_ms INT UNSIGNED NOT NULL, temperature_out FLOAT, humidity_out INT, temperature_in FLOAT, humidity_in INT,"
                      "PRIMARY KEY (time_ms));")
            return

    print(table_environment(db))
Esempio n. 2
0
def handle_get(url, params, wfile):
    db = JawsDB()
    offset_ms, temperature_C, humidity_pct = 0, None, None
    rsp = ""

    logging.info('waterbag.handle_get urlparse:%s; parse_qs: %s' % (url, params))
    if 'insert_temperature' in params:
        temperature_C = float(params['insert_temperature'][0])
    if 'insert_humidity' in params:
        humidity_pct = int(params['insert_humidity'][0])
    if 'offset_ms' in params:
        offset_ms = int(params['offset_ms'][0])

    if len(params) == 0:
        rsp += "<pre>" + read_air(db) + "</pre>\n"
    elif temperature_C is not None or humidity_pct is not None:
        logging.info('insert temperature and/or humidity into db')
        insert_air(db, offset_ms, temperature_C, humidity_pct)
        logging.info('done')
        rsp += 'OK'

    if rsp == "":
        rsp = "UNKNOWN REQUEST"

    wfile.write(bytes(rsp, 'utf-8'))
Esempio n. 3
0
def handle_get(url, params, wfile):
    db = JawsDB()
    offset_ms, temperature_C, humidity_pct, moisture_res = 0, None, None, None
    rsp = ""

    logging.info('waterbag.handle_get urlparse:%s; parse_qs: %s' % (url, params))
    interval_s = INTERVAL_PAST_S
    if 'days' in params and int(params['days'][0]) > 0:
        interval_s = int(params['days'][0]) * 24 * 3600
    if 'hours' in params and int(params['hours'][0]) > 0:
        interval_s = int(params['hours'][0]) * 3600

    if 'insert_temperature' in params:
        temperature_C = float(params['insert_temperature'][0])
    if 'insert_humidity' in params:
        humidity_pct = int(params['insert_humidity'][0])
    if 'insert_moisture' in params:
        moisture_res = int(params['insert_moisture'][0])
    if 'offset_ms' in params:
        offset_ms = int(params['offset_ms'][0])

    if temperature_C is not None or humidity_pct is not None or moisture_res is not None:
        insert_environment(db, offset_ms, temperature_C, humidity_pct, moisture_res)
        rsp += 'OK'
    elif url.path.endswith('table'):
        rsp += "<pre>" + table_environment(db) + "</pre>\n"
    elif url.path.endswith('chart') or url.path == '/environment':
        rsp += chart_environment(db, interval_s)
    else:
        rsp = "UNKNOWN REQUEST"

    wfile.write(bytes(rsp, 'utf-8'))
Esempio n. 4
0
def handle_get(url, params, wfile):
    db = JawsDB()
    rsp = ""

    logging.info('waterbag.handle_get urlparse:%s; parse_qs: %s' %
                 (url, params))
    if 'insert_mm' in params:
        height_mm = int(params['insert_mm'][0])
        logging.info('insert %dmm height into db' % height_mm)
        insert_height(db, height_mm)
        logging.info('done')
        rsp += 'OK'
    elif 'insert_log' in params:
        msg = params['insert_log'][0]
        logging.info('insert log into db: %s' % msg)
        insert_log(db, msg)
        logging.info('done')
        rsp += 'OK'
    elif url.path.endswith('log'):
        rsp += "<pre>" + read_log(db) + "</pre>\n"
    elif url.path.endswith('command'):
        rsp += pop_command(db)
    else:
        rsp += "<pre>" + read_height(db, 30) + "</pre>\n"

    if rsp == "":
        rsp = "UNKNOWN REQUEST"

    wfile.write(bytes(rsp, 'utf-8'))
Esempio n. 5
0
def main():
    """command line interface for testing without running the server"""
    import sys
    db = JawsDB()

    if len(sys.argv) > 1:
        if sys.argv[1] == 'insert_height':
            insert_height(db, int(sys.argv[2]) if len(sys.argv) >= 3 else 123)
        if sys.argv[1] == 'read_log':
            print(read_log(db))
            return
        if sys.argv[1] == 'insert_log':
            insert_log(
                db, sys.argv[2] if len(sys.argv) >= 3 else "testing message")
            return
        if sys.argv[1] == 'pop_command':
            print(pop_command(db))
            return
        if sys.argv[1] == 'insert_command':
            insert_command(
                db, sys.argv[2] if len(sys.argv) >= 3 else "testing command")
            return
        if sys.argv[1] == 'create_height':
            db.create(
                "CREATE TABLE height (time INT UNSIGNED NOT NULL, mm INT, PRIMARY KEY (time));"
            )
            return
        if sys.argv[1] == 'create_log':
            db.create(
                "CREATE TABLE log (time INT UNSIGNED NOT NULL, msg VARCHAR(1024));"
            )
            return
        if sys.argv[1] == 'create_command':
            db.create(
                "CREATE TABLE command (time INT UNSIGNED NOT NULL, cmd VARCHAR(1024), popped ENUM('Y','N'));"
            )
            return
        if sys.argv[1] == 'delete_height':
            if len(sys.argv) == 3 and sys.argv[2] == 'really_do':
                db.delete_all('height')
            else:
                print(
                    "please confirm deletion of table including all data: %s delete_height really_do"
                    % sys.argv[0])

    print(read_height(db, 30))
Esempio n. 6
0
def handle_get(cfg, url, params, wfile):
    db = JawsDB()
    rsp = ""

    logging.info('openweather.handle_get urlparse:%s; parse_qs: %s' % (url, params))

    if url.path.endswith('/html'):
        rsp += "<pre>\n" + read_forecast(db, time.time()) + "</pre>\n"
    if url.path.endswith('/update'):
        insert_forecasts(db, get_forecast(cfg))
        rsp += "UPDATE OK"

    if rsp == "":
        rsp = "UNKNOWN REQUEST"

    wfile.write(bytes(rsp, 'utf-8'))
Esempio n. 7
0
def main():
    """if this module is run, connect to the database and print it out"""
    import sys
    db = JawsDB()

    if len(sys.argv) > 1:
        if sys.argv[1] == 'insert_environment':
            insert_environment(db, 0, int(sys.argv[2]) if len(sys.argv) >= 3 else 22, int(sys.argv[3]) if len(sys.argv) >= 4 else 55)
        if sys.argv[1] == 'create_tables':
            db.create("CREATE TABLE temperature "
                      "(time_ms INT UNSIGNED NOT NULL, temperature_c FLOAT NOT NULL, "
                      "PRIMARY KEY (time_ms));")
            db.create("CREATE TABLE humidity "
                      "(time_ms INT UNSIGNED NOT NULL, humidity_pct INT NOT NULL, "
                      "PRIMARY KEY (time_ms));")
            db.create("CREATE TABLE moisture "
                      "(time_ms INT UNSIGNED NOT NULL, moisture_res INT NOT NULL, "
                      "PRIMARY KEY (time_ms));")
            return

    print(table_environment(db))
Esempio n. 8
0
def main():
    """if this module is run, connect to the database and print it out"""
    import sys
    db = JawsDB()

    if len(sys.argv) > 1:
        if sys.argv[1] == 'insert_air':
            insert_air(db, 0, int(sys.argv[2]) if len(sys.argv) >= 3 else 22, int(sys.argv[3]) if len(sys.argv) >= 4 else 55)
        if sys.argv[1] == 'create_air':
            db.create("CREATE TABLE air "
                      "(time_ms INT UNSIGNED NOT NULL, temperature_c FLOAT, humidity_pct INT, "
                      "PRIMARY KEY (time_ms));")
            return
        if sys.argv[1] == 'delete_air':
            if len(sys.argv) == 3 and sys.argv[2] == 'really_do':
                db.delete_all('air')
            else:
                print("please confirm deletion of table including all data: %s delete_air really_do" % sys.argv[0])

    print(read_air(db))
Esempio n. 9
0
def main():
    """if this module is run, connect to the database and print it out + accept some command line arguments to test methods"""
    import sys
    db = JawsDB()

    if len(sys.argv) > 1:
        if sys.argv[1] == 'insert':
            insert_forecasts(db, [(time.time(), sys.argv[2] if len(sys.argv) >= 3 else 1.23)])
        if sys.argv[1] == 'create':
            db.create("CREATE TABLE forecast ("
                      " valid_from     INT UNSIGNED NOT NULL,"
                      " valid_to       INT UNSIGNED NOT NULL,"
                      " forecast_from  INT UNSIGNED NOT NULL,"
                      " forecast_to    INT UNSIGNED NOT NULL,"
                      " rain_mm        FLOAT,"
                      "PRIMARY KEY (valid_from, forecast_from));")
        if sys.argv[1] == 'delete':
            if len(sys.argv) == 3 and sys.argv[2] == 'really_do':
                db.delete_all('forecast')
            else:
                print("please confirm deletion of table including all data: %s delete_height really_do" % sys.argv[0])

    print(read_forecast(db, time.time()))