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))
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'))
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'))
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'))
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))
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'))
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))
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))
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()))